【发布时间】:2014-06-08 23:34:52
【问题描述】:
我正在 Bash 脚本中执行一个小的 Perl 脚本。 Perl 报告 在 -e 第 28 行的 void 上下文中无用使用常量,这是在 Perl 代码的结尾之后。
Bash 节选:
#
# Perl script to parse album list file
#
PERLSCRIPT=$( cat <<-'__END__'
#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple;
my $albums_file = $ARGV[0];
my $album_id = $ARGV[1];
my $albums_data = XMLin ( $albums_file,
forcearray => [ 'Album' ] );
my $album_key = "";
foreach my $album ( keys %{$albums_data->{Albums}->{Album}} )
{
if ( $album == $album_id )
{
$album_key = $albums_data->{Albums}->{Album}
->{$album}->{Key};
print "$album_key\n";
exit 0;
}
}
exit 1;
'__END__' )
say "$LINENO: Calling perl"
ALBUM_KEY=$(perl -e "$PERLSCRIPT" "$ALBUMS_FILE" "$ALBUM_ID")
执行时,我看到以下内容:
454: Calling perl
Useless use of a constant in void context at -e line 28.
Perl 抱怨什么?
【问题讨论】:
-
为什么不将 Perl 源代码放在一个单独的文件中并调用它呢?
-
显然是指你的
'__END__'令牌。 -
为了回答 squiguy,我想创建一个尽可能独立的 Bash 脚本。我希望其他人能够下载它并让它正常工作,而不需要在路径中安装多个单独的文件并使其可执行。