3

私はいくつかのテキストファイルをアドレス指定するためにperlを使用しています。perl filenameワイルドカードを使用して、フォルダー内のすべての有用なファイルを検索し、それらを1つずつアドレス指定したいのですが、ファイル名にスペースがあります。次に、ファイル名ワイルドカードがそれらのファイル名を適切にアドレス指定できないことがわかりました。これが私のコードです:

my $term = "Epley maneuver";
my @files = <rawdata/*$term*.csv>;
my $infiles;
foreach $infilename (@files) {
    if($infilename =~ m/(\d+)_.*\.csv/)
    {
        $infiles{$infilename} = $1;
        print $1."\n";
    }
}

ファイル名は次のようになります。

34_Epley maneuver_2012_4_6.csv
33_Epley maneuver_2012_1_3.csv
32_Epley maneuver_2011_10_12.csv
...

それらは「rawdata」という名前のフォルダにあります。

「めまい」のようにスペースを含まない用語にこれを使用すると、うまく機能します。ただし、用語にスペースが含まれていると、機能しなくなります。これをGoogleで検索しましたが、役立つ情報はほとんど見つかりませんでした。

何が起こり、どうすればこれを正しく行うことができますか?どんな助けでも良いでしょう。どうもありがとう。

4

1 に答える 1

5

globオペレーターは、コマンド行プロセッサーのように機能します。あなたが書くなら、<rawdata/*Epley maneuver*.csv>それは一致するファイルを探しrawdata/*Epleyますmaneuver*.csv

glob 式は二重引用符で囲む必要があります。

my @files = <"rawdata/*$term*.csv">
于 2012-08-10T19:25:28.870 に答える