「利用者:Dsk/memo/perl」の版間の差分

提供: dsk's note
移動: 案内検索
 
(同じ利用者による、間の12版が非表示)
1行目: 1行目:
 +
===正規表現のリファレンス===
 +
<syntaxhighlight lang="perl">
 +
#Markdownにマッチするのものを表示
 +
my $regexp = qr/\.md$/;
 +
foreach my $file (@files) {
 +
  if ($file =~ $regexp) {
 +
    print $file, "\n";
 +
  }
 +
}
 +
#オプションも付けられる。
 +
#qr// を使うとオプションも含めて変数に保存できる(gオプションは不可)
 +
</syntaxhighlight>
 +
 +
===変数に初期値を代入===
 +
<syntaxhighlight lang="perl">
 +
$a ||= 'test';
 +
</syntaxhighlight>
 +
 +
Defined-or演算子 //
 +
*Defined-or演算子は、左辺が定義されている場合、左辺値を返し、未定義の場合は右辺値を返す。これを利用して、変数に初期値を代入してみる。
 +
#undefだったら1を代入する。0の場合は0。
 +
<syntaxhighlight lang="perl">
 +
$a //= 1;
 +
$a = defined $a ? $a : 1;#以前はこう書いていた。
 +
</syntaxhighlight>
 +
 +
 +
===q - シングルクォートの代替表現===
 +
エスケープしなくてもよいので便利。
 +
<syntaxhighlight lang="perl">
 +
my $a = q/<h1>title</h1>/;
 +
q(<h1>title</h1>)
 +
q{<h1>title</h1>}
 +
q#<h1>title</h1>#
 +
q[<h1>title</h1>]
 +
q!<h1>title</h1>!
 +
 +
</syntaxhighlight>
 +
 +
===配列 デリファレンス===
 +
<syntaxhighlight lang="perl">
 +
for (@{$test->{hoge}}) {
 +
    print $_, "\n";
 +
}
 +
</syntaxhighlight>
 +
 +
===配列のリファレンスを配列スライス===
 +
<syntaxhighlight lang="perl">
 +
my $w = ['a', 'b', 'c', 'd'];
 +
my @a = @{$w}[1, 2];
 +
</syntaxhighlight>
 +
 
<syntaxhighlight lang="perl">
 
<syntaxhighlight lang="perl">
 
$rec = {
 
$rec = {
10行目: 62行目:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
コンストラクタ
+
===ファイル操作===
[http://d.hatena.ne.jp/perlcodesample/20090317/1237125522 コンストラクタの作成]
+
*Path::Class
 +
*File::Slurp - Simple and Efficient Reading/Writing/Modifying of Complete Files
 +
===Link===
 +
*[http://d.hatena.ne.jp/perlcodesample/20090317/1237125522 コンストラクタの作成]
 +
*[http://itpro.nikkeibp.co.jp/article/COLUMN/20071011/284280/  Part1 正しいPerl/CGIの書き方]
  
[http://itpro.nikkeibp.co.jp/article/COLUMN/20071011/284280/  Part1 正しいPerl/CGIの書き方]
+
[[Category: perl]]

2015年5月15日 (金) 16:33時点における最新版

正規表現のリファレンス

#Markdownにマッチするのものを表示
my $regexp = qr/\.md$/;
foreach my $file (@files) {
  if ($file =~ $regexp) {
    print $file, "\n";
  }
}
#オプションも付けられる。
#qr// を使うとオプションも含めて変数に保存できる(gオプションは不可)

変数に初期値を代入

$a ||= 'test';

Defined-or演算子 //

  • Defined-or演算子は、左辺が定義されている場合、左辺値を返し、未定義の場合は右辺値を返す。これを利用して、変数に初期値を代入してみる。
  1. undefだったら1を代入する。0の場合は0。
$a //= 1;
$a = defined $a ? $a : 1;#以前はこう書いていた。


q - シングルクォートの代替表現

エスケープしなくてもよいので便利。

my $a = q/<h1>title</h1>/;
q(<h1>title</h1>)
q{<h1>title</h1>}
q#<h1>title</h1>#
q[<h1>title</h1>]
q!<h1>title</h1>!

配列 デリファレンス

for (@{$test->{hoge}}) {
    print $_, "\n";
}

配列のリファレンスを配列スライス

my $w = ['a', 'b', 'c', 'd'];
my @a = @{$w}[1, 2];
$rec = {
    NAME  => "Jason",
    AGE   => 23,
    PEERS => [ "Norbert", "Rhys", "Phineas"],
};
 
$rec->{NAME}
@{ $rec->{TEST} }

ファイル操作

  • Path::Class
  • File::Slurp - Simple and Efficient Reading/Writing/Modifying of Complete Files

Link