9章 正規表現の利用法 つづき
my $likes_perl =(
if ($likes_perl) {
...
}
p141 メタキャラクタの取り扱いについて 記述が??
9.5 マッチ表現
$4:すでに完了したパターンマッチの4番目の正規表現メモリを表す
\4:現在マッチを行っている正規表現メモリを参照する後方参照
パターンマッチの結果を条件
if ($wilma =~ /(\w+)/){
...
}
14章で$1を使わないでパターンマッチと同時に正規表現メモリを変数に直接セットする方法を示す。
疑問:()をマッチさせたい場合は? メモリと扱わない
9.5.2 自動マッチ変数
$&:マッチ下部分全体
$`:マッチした部分より前
$':マッチした部分より後
9.6 s///を使って置換を行う
s///演算子は値を返す。
if(s/fred/wilma/){
...
}
/gによるグローバルな置換
9.6.2 別のデリミタを使う
s#^https://#http://#;
s{fred}{barney};
s
9.6.3 オプション修飾子(/i /s)
s{__END__.*}{}s; エンドマーかとそれ以降のすべての行を捨てる。
→ すべてが可能なのか?
9.6.5 大文字と小文字の変換
\U: 後ろにつづくものを強制的に大文字にする。
\L: 小文字にする。
\E:変換を中止。
\l:一文字だけ大文字。
\u:一文字だけ大文字。
9.7 split演算子
指定されたセパレータに従って、文字列を分割する。
@fields = split /separator/, $string;
@fields = split /:/, "abc:def:g:h";
デフォルトでは、 $_の内容を空白文字で分割する。
my @fields = split;
p150の ' 'と\sの違いの説明が不明。
9.8 Join関数
splitの逆関数
my $result = join $glue, @pieces;
my $x = join ":", 4, 6, 8, 10,12; # $x="4:6:8:10:12"
練習問題 9章3 Good。
10章 さまざまな制御構造
10.1 unless制御構造
unlessのelse節
10.2 until制御構造
10.3 式修飾子
print "$n is a negative number.\n" if $n < 0;
修飾子の両側は、単一の式しか許さない。
10.4 裸のブロック構造
10.5 elsif節
10.6 autoincrement/decriment
$bedrock++; ++$bedrock;
$bedrock--;
my $b = ++$a; 先にincrement
my $b = $a++; 先に代入
my @people = qw{ };
my %seen;
foreach (@people){
print "I've seen you somewhere before,$_!\n"
if $seen{$_}++;
10.7 for制御構造
/initialization/test/increment/
for (;;){
}
while(1){
}
* foreach文とみなすこともできる
10.8 ループ制御
last演算子
ループの実行を即座に終了
next演算子
現在行っている繰り返しを終了。ループを終了させるのではない。
p166 プログラム 参考
redo演算子
条件式をテストしないでループの先頭にもどる
同じ制御変数に対して繰り返す
ラベル付ブロック
10.9 論理演算子
&& ||
11章 ファイルハンドルとファイルテスト
6つのファイルハンドル名
STDIN/STDOUT/STDERR/DATA/ARGV/ARGVOUT
p179 標準エラーストリームへの送り方
open CONFIG, "dino";
open CONFIG, "
open LOG, ">>logfile";
11.3 dieによって致命的エラーを発生させる
unless (open LOG, ">>logfile"){
die "Cannot create logfile: $!";
}
システムへの要求が失敗した直後に有効。
p184の改行コードをいれる方法がわからない。
warn関数 も似ている。詳細わからず。
11.4 ファイルハンドルを使う
print LOG "Captain\n";
ファイルハンドルと表示される項目の間には、コンマを置かない。
p187 具体的な書き方は?
select演算子で出力ファイルハンドラの変更を行う。
select BEDROCK;
$| の意味がわからない。 p187
11.5 標準ファイルハンドルを再オープンする。
open STDERR, ">>/home/barney/.error_log" or die ...;
11.6 ファイルテスト
if -e filename 既にあるファイルが上書きされないように
if -M CONFIF >28
stat関数/lstat関数
localtime関数
ビット演算子
ビットストリングを使う