「利用者: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の書き方] | ||
− | [ | + | [[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演算子は、左辺が定義されている場合、左辺値を返し、未定義の場合は右辺値を返す。これを利用して、変数に初期値を代入してみる。
- 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