ディレクトリに格納されているファイル名の先頭部分と一致する文字列がPerl変数に格納されています。Perlのgrepを使用して特定のファイルを検索する方法
この変数を使用して、このパターンに一致するファイルをPerlのgrepを使ってディレクトリから探します。ここで私はやっているものです:
opendir (DIR, "data/testroot/") or die "$!";
@file1 = <$f1/*.hdf>
foreach(@file1){
$patt = substr(basename($_),0,$ind);
$file2 = grep {/${patt}*\.hdf/} readdir(DIR);
#other code follows.......
}
closedir(DIR);
まず、私は、フォルダf1
内のすべてのファイルのリストを取得し、配列@file
に格納します。次に、@file1
の各エントリについて、最初の数文字を抽出して$patt
に格納し、$patt
に格納されている一致する開始パターンを持つ別のフォルダdata/testroot/
から同様のファイルを取得しようとします。
そのgrep $file2 = grep {/${patt}*\.hdf/} readdir(DIR);
は機能していません。
はい私は '$ {patt}'に続いて1つ以上の文字と '.hdf'をマッチさせたいので、私はその部分を得ました。しかし、私の行を次のように変更すると、 '$ file2 = grep {/${patt}.*\.hdf}/} readdir(DIR);'それでもファイルを取得しません。何かが間違っている。 – srsci
申し訳ありませんが私の間違い。それは問題を引き起こしていたので、そこに余分な '}'がありました。どうもありがとう。私は新しいことを学びました。 – srsci