該当フォルダ内のファイル名を取得する方法
Perlを学び始めて1週間強といったところで、Perlは本当に驚く書き方が多い。
#!/usr/bin/perl use strict; use warnings; my $logdir = "./log"; #読み込む該当フォルダ名 opendir(DIR, $logdir); my @FILES = readdir(DIR); closedir(DIR); print @FILES;
しかし、opendir関数を使うことはナンセンスらしい。
しかも隠れファイル(.とか)まで余分に読み込んでしまう。
スリムに書くと下記の通り。
#!/usr/bin/perl use strict; use warnings; while(<./log/*>){ print $_."\n"; }
簡潔にできてしまう。
$_を省略したものでもおk。
#!/usr/bin/perl use strict; use warnings; while(<./log/*>){ print ."\n"; }
<>の部分はダイヤモンド演算子といってPerlの父であるLarry Wall氏のお嬢さんが5歳の時に"<>"をみて
「これはダイヤモンドよ!」ということで名付けられたそうだ。(情報ソース:初めてのPerl第三版)
ある意味、Perlはマジックのようなものだな。。
もしファイルの中身も読み込むとしたらこう書くだろうか。
#!/usr/bin/perl my @log_fh = (); open $log_fh; while(<./log/*>){ print $_."\n"; open(FILE, $_); @log_fh = <FILE>; close(FILE); } print @log_fh;