2009/05/22(金) [n年前の日記]
#3 [prog] Perlから外部プログラムを実行する方法でハマる
親父さんのために作成したPerlスクリプトからエクスプローラを起動してるのだけど、エクスプローラを閉じないとPerlスクリプトが終了しないとか、エクスプローラが無反応になるとか、色々不具合が。
system()でエクスプローラを起動してるのがまずかったらしい。起動したソレの結果が返ってくるまでそこで処理待ちをしてしまう模様。exec() なら、Perlスクリプトは終了してしまうけど、固まりにくくなる、ような気がする。
エクスプローラの起動の仕方ももしかするとちょっとまずかったかもしれず。explorer "C:\hoge\fuga" で起動してたけど、explorer /e,"C:\hoge\fuga" のほうがよいのだろうか。
system()でエクスプローラを起動してるのがまずかったらしい。起動したソレの結果が返ってくるまでそこで処理待ちをしてしまう模様。exec() なら、Perlスクリプトは終了してしまうけど、固まりにくくなる、ような気がする。
エクスプローラの起動の仕方ももしかするとちょっとまずかったかもしれず。explorer "C:\hoge\fuga" で起動してたけど、explorer /e,"C:\hoge\fuga" のほうがよいのだろうか。
◎ htmlを解析して画像ファイルリストを取得するようにもしてみたり。 :
HTML::TreeBuilder を使って、ホームページビルダーで作成された画像サムネイル一覧htmlから画像ファイル名を取得する機能もつけた。
use HTML::TreeBuilder;
my $tree = new HTML::TreeBuilder;
$tree->parse_file( "gallery.html" );
$tree->eof();
foreach my $tag ($tree->find("a")) {
my $ text = $tag->as_HTML;
$text =~ s/\n//g;
next unless $text =~ /<a href[^>]+><img[^>]+><\/a>/;
my $imgname = $tag->attr('href');
$text =~ /<a href[^>]+><img.+src=\"([^\"]+)\".+><\/a>/;
my $thumbname = $1;
print "$imgname, $thumbname\n";
}
$tree = $tree->delete;
こんな感じの処理で。
[ ツッコむ ]
以上です。