satoshiabe.jp : Perl Notes
HOME > DOCUMENTS > PROGRAMMING > Perl > Perl Notes
まえがき
Perl のメモ
Perl モジュールをインストールする
make test を実行すると、さまざまな試験が実行される。 最後に試験の結果が表示されるため、もしエラーが表示されたら原因を特定して修正すること。
% tar xzvf HOGE.pm-1.0.0.tar.gz % cd HOGE.pm-1.0.0 % perl Makefile.PL % make % make test % su # make install
サブルーチンの引数をリファレンスで指定する
サブルーチン内では引数が @_ に格納される。 これは、引数のコピーが格納される。
サンプルスクリプトをひとつ。 @list には 5 つの文字列が格納されている。 @list の情報は、サブルーチンの引数に指定したことにより @_ にコピーされる。 この「コピー」がポイントだ。 かりに @list に格納されているリストの情報が巨大だった場合、@_ にコピーさえる処理だけでリソースを消費してしまう。
#!/usr/bin/perl -w use strict; my @list = qw( aaa bbb ccc ddd eee ); sub func { foreach (@_) { print "$_\n"; } } &func(@list);
無駄なリソースの消費を回避するために、「リファレンス」を使用すること。 サブルーチンに渡す引数を \@lis で指定してある。 \@list は @list のリファレンスだ。 リファレンスの情報を格納した $ref を @{$ref} でデリファレンスしている。
#!/usr/bin/perl -w use strict; my @list = qw( aaa bbb ccc ddd eee ); sub func { my $ref = shift; foreach (@{$ref}) { print "$_\n"; } } &func(\@list);
hash をソートする
hash を値でソートする。
辞書順
foreach ( sort { $hash{$b} cmp $hash{$a} } keys %hash) { print "$hash{$_},$_\n"; }
数値順
foreach ( sort { $hash{$b} <=> $hash{$a} } keys %hash) { print "$hash{$_},$_\n"; }
リンク
CPAN (cpan.org)
perlref - Perl references and nested data structures (perl.com)