我在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在抱怨什么?
答案 0 :(得分:4)
我认为它指的是'__END__'
行。 bash的<<-'TOKEN'
heredoc表示法不需要单引号。
$ perl -w <<-'__END__'
> print "hello world\n";
> '__END__'
> __END__
Useless use of a constant (__END__) in void context at - line 2.
hello world
$ perl -w <<-'__END__'
> print "hello world\n";
> __END__
hello world