opendir(DIR, "./datafile"); while (my $filename = readdir(DIR)) { next if $filename eq '.'; next if $filename eq '..'; unshift(@indexlist,$filename); } closedir(DIR);
foreach $value (@indexlist) { print "$value<br>"; } こんな感じでファイル名を読みとってリンクを作ろうと思うんですが、このディレクトリには.txtファイルがあって、上に書いたようにファイル中にタイトルが記入されてあるんです。 ここから open (TXT, "< $indexlist[0]); $line = <TXT>; close (TXT); という風に読み込みができて、読み込んだものをsplitできるようになると思うのですが、何せ複数個のファイルをここから読む込むというアイディアが全然思い浮かばないんです。 opendir(DIR, "./datafile"); while (my $filename = readdir(DIR)) { next if $filename eq '.'; next if $filename eq '..'; open (TXT,"< $filename"); $line = <TXT>; print $line; close (TXT); } closedir(DIR); などとやってみたのですが、当たり前の話しですが、全然ダメでした。
opendir(DIR, "./datafile");
while (my $filename = readdir(DIR)) { #while使うと自分でわかりやすいというだけです。のさんの正規表現はまだ勉強中であります!
next if $filename eq '.';
next if $filename eq '..';
unshift(@indexlist,$filename);
}
closedir(DIR);
for (@indexlist) {
open TXT, '<' . './datafile/' . $_ or die $!;
my $line = <TXT>;
@_ = split /\t/ , $line;
print "$_[0]: <a href=\"./datafile/$_\" class=\"title\" target=\"_parent\">$_[2]</a><br>";
close TXT;
open TXT, '<' . './datafile/' . $_ or die $!;
これ初めて見ました。これは、.で区切っているんですよね?
もう一つは、die $!です。これは、or &errorみたいな感じでファイルが見つからない場合なんかに実行される奴でしょうか?調べたんですが、$!がわかりませんでした。
僕が見たことある感じだと、
open (TXT, "< datafile"|| &error);
とかです。()なしでopenできるんですね。