Perl打开文件,名称中包含变量

Dan*_*l S 2 perl

为什么这个例子不起作用?

#!/usr/bin/perl
use POSIX qw(strftime);
use Time::Local;

my $date = strftime "%Y-%m-%d", localtime;
my $command = "ls clients/*/ERRORi/" . $date . "/*s";

@result = `$command`;

foreach $group (@result) {
  my $file = '/opt/' . $group;
  open( my $input_fh, '<', $file) || die "Can't open $file: $!";
  print $input_fh;
}
Run Code Online (Sandbox Code Playgroud)

它将返回:

Can't open /opt/clients/cli8832/ERRORi/2014-06-25/file.564159972s
: No such file or directory at ./my.pl line 12.
Run Code Online (Sandbox Code Playgroud)

但如果我这样做的ls /opt/clients/cli8832/ERRORi/2014-06-25/file.564159972s

JB.*_*JB. 8

您的$file变量包含尾随换行符,而实际文件名则不包含.

你应该这样chomp做.