Perl勉強メモ
第一歩
perl -e "print 'Hello world!';"
'-e'オプションは""内をperlスクリプトとして実行する.
以下のようなhello.plというファイルを用意して
# hello.pl print "Hello World!! \n";
ターミナルで以下を実行.
perl hello.pl
基本
$xx = 1; $yy = 3; $zz = $xx + $yy; print "The answer is $zz .\n";
変数名の前にシジル(sigil)と呼ばれる記号をつけて,スカラ($xx),配列(@xx),ハッシュ(%xx)を区別する.
{ my $num = 2 + 3; my $message = "Hello, world"; my @nums = (0, 1, 2); my %score = (english => 100, math => 80); # これらの変数は開き括弧「{」から閉じ括弧「}」までの間で有効. }
配列
@xx = ( "A", "B" ); $xx[2] = 'C'; @xx[3..4] = ( "D", "E" ); print @xx; print $xx[0]; print @xx[0..2];
ハッシュ
ハッシュは以下のようにすれば
%xx = ("tanaka","male","suzuki","female"); print "$xx{'tanaka'} \n"; print "$xx{'suzuki'} \n";
或いは
%xx = (tanaka=>male,suzuki=>female); print "$xx{'tanaka'} \n"; print "$xx{'suzuki'} \n";
出力結果は
male female
となる.
文字列比較演算子
if ($xx eq $yy) # $xxと$yyが等しければ if ($xx ne $yy) # $xxと$yyが異なっていれば if ($xx lt $yy) # $xxが$yyより小さければ if ($xx gt $yy) # $xxが$yyより大きければ if ($xx le $yy) # $xxが$yyより等しいか小さければ if ($xx ge $yy) # $xxが$yyより等しいか大きければ if ($xx =~ /ABC/) # $xxがABCという文字を含んでいれば if ($xx !~ /ABC/) # $xxがABCという文字を含んでいなければ if ($xx cmp $yy) # 比較し、-1, 0, 1 のいずれかで返す
文字列結合
文字列$yyと文字列$zzを結合して文字列$xxに格納
$xx = $yy . $zz; $xx .= $yy;
文字列置換
abcをABCに置換する.sは置換を表し,gは一括置換をあわらす.
$xx =~ s/abc/ABC/g;
正規表現によるマッチングで,対応する(...),(...)に$1,$2,..が格納される.
$xx = "12:34:56"; $xx =~ s/([0-9][0-9]):([0-9][0-9]):([0-9][0-9])/$1時$2分$3秒/g;