答えて
my %data;
my @FILES = @ARGV;
# or maybe @FILES = glob("some/directory/*.ext");
これはPerlであるため、さまざまな方法があります。
彼らは、コマンドライン引数なら、あなたはそれらの上にこのようなすべての反復処理することができ、たとえば、すべてのファイルが@ARGV
であると仮定すると、
# 1. Open and load each file
foreach my $file (@FILES) {
local $/ = undef;
open my $fh, '<', $file;
$data{$file} = <$fh>;
}
# 1b. Using map
%data = map {
local $/=undef;
open my $fh, '<', $file;
my $data = <$fh>;
$_ => $data
} @FILES;
# 2. Leverage your operating system
foreach my $file (@FILES) {
$data{$file} = qx(/bin/cat "$file");
}
# 3. Use a module
use File::Slurp;
foreach my $file (@FILES) {
$data{$file} = File::Slurp::slurp($file);
}
# 3b, using map
use File::Slurp;
%data = map { $_ => File::Slurp::slurp($_) } @FILES;
このperlfaqエントリを参照してください:コードの繰り返し処理は、コマンドラインとして渡され、この場合には、ファイル名のリストの上に
my %hash = (
filename => $file_content,
# ...
);
my %data;
foreach my $fn (@ARGV) {
open (my $IN, $fn) or die "couldn't open $fn: $!";
$data{$fn} = join "", <$IN>;
close $fn;
}
foreach my $key (keys %data) {
print "File $key:\n$data{$key}\n\n\n";
}
:How can I read in an entire file all at once?
ハッシュは次のように作成することができます@ARGVの引数。それぞれのファイル名に対して、ファイルハンドルを開き、ファイルの各行を配列の要素としてロードする配列コンテキストでファイルハンドルを読み込みます。この場合、私たちは無名配列に読み込み、joinに渡されます。結合は配列の要素を結合します。この場合は空の文字列をセパレータとして使用します。その結果、ファイル内容全体を含む1つの文字列が、ファイル名をキーとしてハッシュに格納されます。 2番目のループは結果を出力します。
大きなファイルの場合、これは自分自身を高速メモリから実行するための良い方法です。ストリーミングモードでデータを処理する方法について考えてみましょう。
なぜwhile(<>)を使わないのですか? –
@Nathan Fellman - スタイルの問題、私は思います。 @ARGVにあるファイル名に頼るのではなく、関数に直接変換できるので、私はこのようにしました。また、そのイディオムで現在読み込まれているファイルの名前を取得する方法を調べる気がしなかった。 –
:あなたがしようとしているものの例を与えることができ
@array =();
while (<>) {
push @array, $_;
# or any other manipulation on the lines
# for instance extracting a key and value from
# the line and putting them into a hash
}
- 1. 複数のファイルを読む
- 2. ディレクトリから複数のファイルを読む
- 3. Valaで複数のファイルを読む
- 4. 複数のxmlファイルをPHPで読む
- 5. 複数のファイルを読む(wavread)
- 6. 読む複数のマクロ有効Excelファイル
- 7. Perl、複数のファイルから1つの変数を読む
- 8. JAVAを使用してフォルダ内の複数のファイルを読む
- 9. 2GBを超える複数のpcapファイルを読むには?
- 10. ファイルのアップロードで複数の行を読む
- 11. Pythonで複数のスレッドから1つのファイルを読む
- 12. pickleファイルに複数のオブジェクトを保存して読み込む?
- 13. ディレクトリから複数のファイルを読むR
- 14. 複数のファイルをリストビューに読み込むVB.Net
- 15. 複数のcsvファイルをSASデータセットに読み込む
- 16. java複数のJTextFieldを.txtファイルから読み込む方法
- 17. 複数のファイルをディレクトリから読み込むR
- 18. 複数のスレッドで書き込みファイルを読み込む
- 19. Perl:複数のファイルを読むとパフォーマンスが低下する
- 20. 複数のファイルにxmlを読み込む
- 21. iOSコンテンツブロッキング拡張機能複数のJSONファイルを読み込む
- 22. Matlabに複数のmartrixファイルを読み込む
- 23. AngularJSで複数のJSONファイルを読み込む
- 24. 複数の区切り文字を含むファイルをC++で読む
- 25. PySpark + ElasticSearch:複数のインデックス/タイプを読む
- 26. 複数の画像を読むPHP
- 27. Codeigniter複数のテンプレートを読み込む
- 28. 複数のプロパティファイルを読み込む
- 29. 複数のテクスチャを読み込むopenGL
- 30. シリアルポートを読むためのPython複数スレッド/複数のプロセス
を何がうまくいかない? –
どのようにファイルを指定していますか?名前のリストまたはglob(ワイルドカード) – justintime