Perl で必要なときだけモジュールをロードする
2004-11-16-1 / カテゴリ: [programming][perl] / [permlink]
http://sasao.fusetsu.org/memo/perl.txt
sub func { require Path::Module; import Path::Module; }perl 5.005 でも OK
Spreadsheet::ParseExcelでExcelの操作
2004-11-11-2 / カテゴリ: [programming][perl] / [permlink]
OLE::Storage_Lite が必要
Unicode::Map も必要ぽい
Unicode::Map も必要ぽい
IPaddr の計算用モジュール
2004-11-01-3 / カテゴリ: [network][programming][perl] / [permlink]
http://search.cpan.org/~luismunoz/NetAddr-IP-3.21/
use NetAddr::IP ; my $ip = new NetAddr::IP "192.168.175.4/255.255.255.128" ; print "The address is ", $ip->addr, " with mask ", $ip->mask, "\n" ; print "nw is ", $ip->network, "\n" ; print "bc is ", $ip->broadcast, "\n" ; print "range is ", $ip->range, "\n" ; print "first is ", $ip->first->addr, "\n" ; print "last is ", $ip->last->addr, "\n" ; print "mask is ", $ip->masklen, "\n" ; print "num is ", $ip->num, "\n" ;便利!
モジュールコンパイル
2004-10-08-1 / カテゴリ: [perl] / [permlink]
$ perl Makefile.PL prefix=/path/to (うまくいかないなら perl Makefile.PL lib=/path/to かも) $ make $ make test $ make install
use CGI での未定義
2004-10-07-1 / カテゴリ: [programming][perl][CGI] / [permlink]
my $hoge = $query->param('hoge');で取得した場合、
?hoge=xx
は当然 xx
?hoge=
は空文字(defined)
なにもなければ
undef
になる
Perl コマンドラインオプション -a … split モード
2004-09-13-1 / カテゴリ: [perl][shell][command] / [permlink]
$_ をスペースで区切って@Fにいれる。
forkした子プロセスをwaitしない(見殺しにした)ときの defunct 抑制
2004-08-01-1 / カテゴリ: [programming][perl] / [permlink]
$SIG{CHLD} = 'IGNORE';でよい
親プロセスは fork した子プロセスは完全にシカトするようになる。
Perl の open でコマンド実行
2004-07-14-1 / カテゴリ: [programming][perl] / [permlink]
open(F, "| cat"); print F "hogehoge\n"; close(F);
これで、"print hogehoge\n"をcatにパイプする
Getopt::Long で同一オプションを複数回もちいて配列に
2004-07-11-1 / カテゴリ: [programming][perl] / [permlink]
GetOptions("option:s" => \@array);んで、
$ ./prog.pl --option foo --option bar --option bazでもって
@array に ("foo", "bar", "baz") がはいる
5.005 で、glob の対象が多すぎるとでるアレ
2004-06-24-1 / カテゴリ: [programming][perl] / [permlink]
miyazaki@nwmail:~/work$ cat -n pick.pl 1 #!/usr/bin/perl 2 3 @list = <imail/queue/deferred/SMTP-Deliver/*/*/*/*-Control>; 4 5 print "hoge\n"; miyazaki@nwmail:~/work$ ./pick.pl glob failed (child exited with status 1) at ./pick.pl line 3. hoge miyazaki@nwmail:~/work$ /usr/bin/csh nwmail:~/work% echo imail/queue/deferred/SMTP-Deliver/*/*/*/*-Control 引数が長すぎます。 nwmail:~/work% echo $status 1 nwmail:~/work% setenv LANG C nwmail:~/work% echo imail/queue/deferred/SMTP-Deliver/*/*/*/*-Control Arguments too long nwmail:~/work% echo $status 1 nwmail:~/work% /usr/local/bin/tcsh nwmail:~% echo imail/queue/deferred/SMTP-Deliver/*/*/*/*-Control ^C nwmail:~% echo imail/queue/deferred/SMTP-Deliver/*/*/*/*-Control | wc -l 1 nwmail:~% echo imail/queue/deferred/SMTP-Deliver/*/*/*/*-Control | more imail/queue/deferred/SMTP-Deliver/0/aaa0example.org/0/22518.9208984375-Control ... (1行で出力されるよん)
ソースから見て相対的なパスのモジュールを常にロード
2004-06-21-4 / カテゴリ: [programming][perl] / [permlink]
use FindBin qw($Bin); use lib $Bin;
ファイルテスト演算子 -M -A -C
2004-06-21-3 / カテゴリ: [programming][perl] / [permlink]
ファイルの更新/参照/inode変更時刻とプログラム実行時間の差の日数を返す
time と stat[*] の差を 60*60*24 で割った値と同じ、かな
time と stat[*] の差を 60*60*24 で割った値と同じ、かな
unix find 相当モジュール File::Find
2004-06-21-2 / カテゴリ: [programming][perl] / [permlink]
SYNOPSIS: find サブルーチンのリファレンス, ディレクトリ
(例1) 実行ファイル(-x)をprint
(例2) 配列に入れる
(例1) 実行ファイル(-x)をprint
use File::Find; find(\&wanted, $dir); sub wanted { print "$File::Find::name\n" if -x $_; }
(例2) 配列に入れる
use File::Find; find(sub { push @files, $File::Find::name if -f }, $dir);
文字コード
2004-06-17-2 / カテゴリ: [programming][perl] / [permlink]
perl -ne 'foreach (split(//)) { printf("0x%X\n", ord $_) }' < jis.txtテキストファイル jis.txt を1バイトずつ文字コードを16進で表記する。
glob によるファイルリスト取得
2004-06-10-1 / カテゴリ: [programming][perl] / [permlink]
5.002 だと、"!" とかのシェル上で扱う場合にエスケープが必要なものは、
perl でもエスケープが必要
perl でもエスケープが必要
@list = glob <\\!*>;5.6 系だと要らないみたい。
ファイルの参照時刻・更新時刻を変更する: utime
2004-05-21-2 / カテゴリ: [programming][perl] / [permlink]
utime atime_epoch, ctime_epoch, @filelist;
Perl で tail -f と同じことをさせる
2004-05-11-1 / カテゴリ: [programming][perl] / [permlink]
http://www.att.or.jp/perl/faq/faq5j.html#5-22
負荷になるので注意(笑)
File::Tail 使うよりラクかも。
#!/usr/bin/perl open(FILE, $ARGV[0]); for (;;) { for ($curpos = tell(FILE); $_ = <FILE>; $curpos = tell(FILE)) { print; } select undef, undef, undef, 0.5; seek(FILE, $curpos, 0); }0.5sec の sleep は、まぁ好みで。ただし、sleep が入っていないとすさまじい
負荷になるので注意(笑)
File::Tail 使うよりラクかも。
最終更新時間: 2013-05-02 16:12