変数・Database : test.pl→topへ | |||
スカラー変数 | $y = -10;$x = 'hello'; | リストと配列 | @x = (1, 2, 3);$fruit[2] = "banana"; 末尾に追加するには push(@char,"D");例はadd.pl |
ハッシュ変数 | %fruit = ("1", "apple", "55", "banana");(キー,値,キー、値,...), $fruit{55}で値が出る。hash=混乱。hash.pl | 書きこみ | $fruit{"red"}="apple";$map{$run}{$module}{$chip}=$innse; |
取り出す | keys (%fruit)でキーを取出(順不同)values (%fruit)で値を取出す(順不同)test.pl | ペアー削除 | delete $fruit{"yellow"}; すべてを削除するには%fruit=(); |
比較 | $a <=> $b で0,1($a>$b),-1を返す | 要素の追加・削除 | 先頭に unshift(追加) shift(削除);末尾に push(追加) pop(削除) |
文字列の分割 split | $string1 = "abc,def,ghi"; @array2 = split(/,/, $string1);
datetime分割例split_datetime, 複数文字の分割は/[ABC]/とすればA,B,C夫々で分割する。AとBの間に何もないとblankがそこに入る。アルファベットを除くには/[a-zA-Z]+/とする。ここで+は連続している物も除くという意味。(例:split_runs.pl) | パターンマッチ演算子(m//) | m!パターン!, m@パターン@, m%パターン%, m(パターン), m{パターン}, m[パターン], m<パターン> , http://www.perlplus.jp/regular/ini/index4.html |
datetime変換 | date.pl参照 | 文字列の整形 | sprintf ( 書式, リスト ) printf("番号は %03d です", 24); cid=sprintf("fff%f",f); |
文字列の取出 | $str = substr($word, 0(開始位置),4(文字長)); | 文字列の置換 | substr($word, 0, 4) = "lemon |
入出力 : test.pl | →topへ | |||
print $a+$b, print "$y $a and $b \n"; print "@array \n", printf("数値は%d%n\n", 45, $count); printf([ファイルハンドル] 書式指定文字列, リスト); 戻り値 = sprintf(書式指定文字列, リスト); | 入力 | open(IN,"data.txt");@file = <IN>;close(IN); 1行づつだ。例read.pl, spaceで分けるには($a,$b) = split(/ /,$xxx);、直接にはcommand_in.pl | |
出力 | open (OUT, ">$outfile") or die "$!";で開く。>があれば既存ファイルなくても新しく作る。>>だとappendのようだ。入出力例はIOtest.pl,->ファイル操作 | コマンドライン引数 | $ARGV[2]など 例commandline_arguments.pl |
mySQLへのアクセス | 例:chip_occupancy.pl,他にコネクトするときは$query1->finish(); $connect->disconnect();がいるようだ。2015.11.17 | DBI | DBI module enables your Perl applications to access multiple database types transparently to MySQL, MSSQL, Oracle, Informix, Sybase, ODBC etc. without having to know the different underlying interfaces of each. |
制御 : →topへ | |||
条件式 | 数値を比較する演算子(== != > >= < <=)と文字列比較する演算子(eq ne gt ge lt le)に分かれている。if ($size < 10) { print "大きい\n";} elsif (eがないよ) else (必ず{ }が要る) , 条件積はif (($xx==2) && ($yy==3)) 条件和はif (($xx==2) || ($yy==3)) | ループ文 | while ( 条件 ) {実行}, foreach 制御変数 (リスト値) { 実行 } リスト値の要素を順に制御変数にセットして実行する。例:foreach.pl |
for文 | for ($i=3; $i>0; $i--) {実行}, if(**){next;}スキップ, if(**){last;}ループ終了:例:for.pl | 並びかえ | (文字順)@A = sort {$a cmp $b} @array; (数値順)@A = sort {$a<=>$b} @array; 例:sort.pl |
ファイル操作 : →topへ | |||
ファイルハンドル | (1)open(IN,"<log.txt");(2)@file = <IN>;(3) close(IN); | 読み書きモード | (読む)"<log.txt"(上書き)">log.txt"(追加書き)">>log.txt" |
正規表現 : →topへ | |||
/XY...Z/ | パターンマッチ演算子 | マッチする | if ($word =~ /abc/) , if ($word !~ /abc/) |
メタ文字 | \$($をエスケープ)^X(先頭)a.b (任意文字),X$(末尾マッチ),,, | a|b|c | パイプ=論理和 |
ブラケット | [0-8]は0から8まで | 指定子 | {n,m} 直前の文字をn回以上、m回以下にマッチ |
置換 | $word =~ s/pen/book/; | ||
サブルーチン : →topへ | |||
定義 | sub abc{....}, sub abc{@list=@_;...} で受取。sub abc{...return @back;} 例:sub.pl, sub2.pl | 呼び出し | &ans; 値投げは&ans(1,3,2); 値戻しは@list=&abc |
ローカル変数 | local または my(Perl5のみ) を使用。my $word = "雨"; | ディレクトリ操作 | opendir、readdir、closedir,mkdir関数 と rmdir関数 |
検索 : →topへ | |||
検索 index | $find = index ($str, $letter,開始位置)マッチ最初の位置を返す。なければ-1 "; ディレクトリの読み取り |