Perl(3)

9章 正規表現の利用法 つづき
 my $likes_perl =( =~ /\byes\b/i);
 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#barney#;
 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, "fred";
  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関数
    ビット演算子
    ビットストリングを使う