モジュールのソースを見る
2004-11-26-3 / カテゴリ: [perl][command] / [permlink]

perldoc -m Dir::Module

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 も必要ぽい

MIME-tools
2004-11-11-1 / カテゴリ: [perl] / [permlink]

MIME::Base64 と MailTools と IO/Stringy が必要

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 で割った値と同じ、かな

unix find 相当モジュール File::Find
2004-06-21-2 / カテゴリ: [programming][perl] / [permlink]

SYNOPSIS: find サブルーチンのリファレンス, ディレクトリ

(例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 でもエスケープが必要
@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
#!/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 使うよりラクかも。
カテゴリ: perl / 前ページ 1 2 3 4 5 次ページ

最終更新時間: 2013-05-02 16:12