Perl コマンド集のページ

2011.3.12:Taka Kondo's personal command memos:   Linux   ROOT   C++   html   Perl   Python   TeX   TWiki   SVN   shell   vi   emacs |
link to: Perl入門 | とほほのperl入門 CGI on Windows
   
変数・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へ
printprint $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 DBIDBI 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 "; ディレクトリの読み取り