5章 ハッシュ
$hash{$some_key}
5.2.1ハッシュ全体を扱う
%some_hash = {"foo",35,"bar",12.4,2.5,"hello","wilma",1.72e30,"betty","bye\n");
@any = %some_hash; ハッシュをほどく。順番に並ぶと限らない。
%inverse_hash = reverse %any_hasy; キーと値のペアをひっくり返す
my %last_name = (
"fred" => "flintstone",
"dino" => undef,
"barney" => "rubble",
"betty" => "rubble", #p94 ,いるの?
};
keys関数とvalues関数
my @k = keys %hash;
my @v = values %hash;
each関数 ハッシュ全体に対して繰り返し行いたい場合
while ( ($key,$value) = each %hash ) {
print "$key => $value\n";
}
foreach $key (sort keys %hash){
...
}
ハッシュの要素の真偽
$books{"barney"} = 0;
$books{"pebbles"} = undef;
exists関数 キーが存在するか?
if (exists $books{"dino"}){
print "Hey\n";
}
delete関数
delete $books{$person};
p100 ハッシュの要素を変数展開する ??
p101演習 結果異なる。
print "$name'firstname is $friend_name{$name}\.\n";
print "$name\'firstname is $friend_name{$name}\.\n";
<>
p101の2の演習はみどころがある。
6章 入出力の基本
chomp($line =
while (defined($line =
...
}
while (
print "I saw $_";
}
while (defined($_ =
print "I saw $_";
}
入力した行は、$_に格納される。whileループの条件部に行入力演算子を単独
でつかった場合のみ有効。
foreach (
print "I saw $_";
}
whileとforeachで動作が同じに見える。
しかし、foreachはリスト要求するのでメモリに注意。
whileの結果
%>111
%>I saw 111
%>222
%>I saw 222
%>333
%>I saw 333
%>444
%>I saw 444
6.2 ダイヤモンド演算子からの入力
起動引数
%> ./my_program fred barney betty
while (<>){
chomp;
print "It was $_ that I saw!\n";
}
@ARGVに起動引数のリストがセットされている
printfによるフォーマット付出力
printf "%g %g %d %6d %2d %10s %-15s%12.3f
%記号を表す場合は、 %%
chomp(my $width =
printf "%${width}s\n",$_;
7章 正規表現の基本
7.2.1 メタキャラクタ
. 一文字ワイルドカード
7.2.2 量指定子
* 直前のものに0回以上
+ 直前のものに1回以上
? 直前のものに 0,1回
7.2.3 グループ
/(fred)+/ fredfredfred
7.2.4 選択肢
| /fred (and|or) barney/
逆スラッシュエスケープが使える。(ダブルQuote扱い)
\を表す場合は、\\ とする。
while(<>){
chomp;
if(/pattern/){
print "Matched: |$`<$&>$'|\n";
} else{
print "No match.\n";
}
}
8章 正規表現の詳細(p125-)
文字クラス 1対の[]の間に文字をならべたもの
[abcwxyz] [a-cw-z]
[^def] d,e,f以外
\d [0-9]
\w [A-Za-z0-9_]
\s [\f\t\n\r ]
8.2 汎用の量指定子
/a{5,15}/ aを5から15繰り返したものにマッチ
* は、{0,}と同じ。
文字列の先頭 ^ キャレットアンカー
文字列の末尾 $ ドル記号アンカー
8.3.1 ワードアンカ−
ワード境界アンカー \b ワードの両側にマッチ
非ワード境界アンカー \B
8.4.1 後方参照
/(.)\1/ \1には、最初の括弧のペアにマッチした部分が格納
8.4.2 メモリ変数
$1 パターンマッチが終了した時点で使える。\1との違い?
8.5 優先順位
詳細がよくわからん。省略
.とマッチさせる場合は、/\./
['"] p131 文字クラス内は、\は関係ないようだ
$とマッチさせる場合は、 /\$/
9章 正規表現の利用法
m// m{} m^^ など
"http://"にマッチさせるために /^http:\/\// →m%http://%
//i 大文字小文字を区別しない。
//s あらゆる文字にマッチ。改行も
9.3 結合演算子 =~
defaultは、$_に対して作用するが。。