读多个文件?

-1 perl

如何在perl中读取多个文件并将它们存储在哈希中?

谢谢.

mob*_*mob 13

my %data;
my @FILES = @ARGV;
# or maybe   @FILES = glob("some/directory/*.ext");
Run Code Online (Sandbox Code Playgroud)

由于这是Perl,因此有很多方法可以做到.

# 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;
Run Code Online (Sandbox Code Playgroud)

  • 词汇文件句柄(你用我的声明,ala我的$ fh,但不仅仅是FH)在它们超出范围时自动关闭 - 他的所有例子都做了! (2认同)