satoshiabe.jp : Perl Notes

HOME > DOCUMENTS > PROGRAMMING > Perl > Perl Notes

Perl Notes

Updated : 2006/05/15
Created : 2006/03/07

まえがき

Perl モジュールをインストールする

サブルーチンの引数をリファレンスで指定する

hash をソートする

リンク

まえがき

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)

Email to Satoshi ABE