2007/05/06

[技術系]   Windowsのperlで@ARGVのワイルドカード展開

at 14:51JST
 
よく忘れるので写経。
#!/usr/bin/perl 

use strict;

my @files;
# Extract Windows' wild cards
while ( my $i = shift @ARGV ) {
push( @files, glob( $i ) );
}
print "@files";

こんな感じで3行ほど追加しておけばWindows/UNIXとも同じように動く。

ただし、
・\x5C問題がある
 http://digit.que.ne.jp/work/index.cgi?Perl%E3%83%A1%E3%83%A2%2FWindows%E3%81%A7%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%91%E3%82%B9
・taintedな入力には使えない
 http://www.ipa.go.jp/security/awareness/vendor/programming/a04_02_main.html
ことに留意せよ。

こんなのもあるのでシームレスに処理できないこともない。
・Wildcard.pm
 http://homepage2.nifty.com/kipp/perl/scripts.html

ただ、下記のサイトで引用されている論評には同意しかねる…。

小粋空間: Active Perl でワイルドカードを利用する
http://www.koikikukan.com/archives/2005/08/16-235838.php
もっと上手な「Perl使い」の人たちは、ワイルドカード自体あまり使いません


シェルの機能であるワイルドカードと、スクリプト言語の機能性とは別問題かな。やっぱ本来はActivePerlがコマンドラインのワイルドカードを展開してスクリプトに引き渡すのが、MS-DOS悠久の歴史から言ってオーソドックスかと。ここらへんはCP/Mとの互換性が関わってくるので変えられない。
 # この元発言主、BaseBandさんなのね。なつかしー



関連しそうな過去記事:
さらに過去の記事
2009/04 (1)   2008/12 (3)   2008/11 (9)   2008/10 (10)   2008/09 (20)   2008/08 (2)   2008/07 (23)   2008/06 (16)   2008/05 (22)   2008/04 (11)   2008/03 (21)   2008/02 (20)   2008/01 (21)   2007/12 (32)   2007/11 (37)   2007/10 (46)   2007/09 (63)   2007/08 (33)   2007/07 (41)   2007/06 (81)   2007/05 (173)   2007/04 (168)   2007/03 (113)   2007/02 (123)   2007/01 (92)   2006/12 (111)   2006/11 (185)   2006/10 (20)  
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。