PerlTips
Perlプログラミングの小技
目次
数値[編集]
数学[編集]
配列操作[編集]
配列の要素をランダムに選択する[編集]
$array[ rand @array ];
Perlに限らず、区間[0,1)の実数値を返すrandomといった関数と切り捨て (切り下げ) 関数floorといったものを使って、floor(random()*(n+1)) と書けば、0から正整数nまでの整数をランダムに返すものになる (別の範囲の整数が欲しければ適当な整数を加減すればいい)。
Perlのrand関数は0以上引数未満の実数値を返す。 また配列の要素を指定するインデックスが整数でない場合、整数に自動的に丸められる (ゼロへの丸め) ので $array[ int(rand @array) ] とint()を書く必要はない。
配列の要素をランダムに並び替える[編集]
use List::Util; @array = List::Util::shuffle @array;
- http://www2u.biglobe.ne.jp/~MAS/perl/waza/ashuffle.html
- http://monkeyness.com/perl/cookbook/ch04_18.htm
- 配列操作、参考サイト
日付[編集]
ファイルのタイムスタンプを取得。[編集]
localtime( (stat $filename)[9] );
日付テキストのフォーマット付き出力。[編集]
use Time::Local; use POSIX qw(strftime); print strftime "%Y/%m/%d %H:%M:%S¥n", localtime();
大量ファイルの一括処理[編集]
ディレクトリ内の全ファイル[編集]
opendir(DIR, "/somewhere"); @files = readdir( DIR ); foreach $f ( @files ){ # do something } closedir(DIR);
連番ファイル[編集]
#!/usr/bin/perl foreach $i ( 0..79 ){ $_ = sprintf( "../../sq01/data/field-%03d-00097.dat", $i); print( "ln -s $_", "\n" ); # system( "ln -s $_" ); } #end
ファイル情報[編集]
ファイルサイズを取得。[編集]
localtime( (stat $filename)[7] );
入力操作[編集]
Mac OS Xのクリップボードからテキストを読み込む際には (日本語環境では)¥ 記号を \ に修正する必要があります。
my $content = `pbpaste`; $content =~ s/\x80/\\/g;
出力[編集]
クリップボードに出力[編集]
Mac OS Xのクリップボードに出力します。その際、iconv コマンド(ref.UNIXの基本コマンド)で、漢字コードを EUC → SJIS に変換した方が良いでしょう。
open OUT, "| iconv -f euc-jp -t sjis | pbcopy"; print OUT "Hello\n";
AppleScriptに出力。[編集]
open OUT, "| iconv -f euc-jp -t sjis | osascript"; print OUT "Tell application \"Finder\" to activate\n";
パイプ[編集]
標準エラー出力を捕まえるには
open(ERRIN,"command 2>&1 |");
のようにする。
数値とバイナリの変換[編集]
- http://mikeneko.creator.club.ne.jp/~lab/perl/numerical_transform/
- http://mikeneko.creator.club.ne.jp/~lab/
Wiki のデータディレクトリは、次のようにすれば見やすい。
ls | perl -pe 's/(([0-9A-F]+)\.txt)$/$1 . "\t[ " . pack("H*",$2) . " ]"/eg'
Perl 5.8 と Unicode[編集]
Perl 5.8
perl5.8のUnicodeサポート
ネットワーク[編集]
ネットワークプログラミングの基礎知識
スタイン,リンカーン (著)・クイープ (訳)『Perlネットワークプログラミング―ソケットの使い方からクライアント/サーバーシステムの開発まで』(ピアソン・エデュケーション, 2002/12/20, 5985円)
ウォング,クリントン (著)・法林 浩之 (監訳)・須田 隆久 (訳)『Webクライアントプログラミング』(オライリー・ジャパン, 1997/09/29, 3045円)
LWP
- http://digit.que.ne.jp/work/index.cgi?Perl%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB%2FLWP#i3
- http://homepage3.nifty.com/hippo2000/perltips/LWP.html
- http://homepage3.nifty.com/hippo2000/perltips/LWP/Simple.html
- http://homepage3.nifty.com/hippo2000/perltips/lwpcook.html
その他[編集]
Perl コードの最適化
Storable