我在perl脚本中运行以下代码。
awk: syntax error at source line 1
context is
>>> == <<<
awk: bailing out at source line 1
然而,它给了我错误:
${tomcat}/conf/server.xml
导致此错误的原因是什么?
答案 0 :(得分:2)
尝试逃避$符号:
my $record = `awk -F'[:;]' '\$1 == "Amy"' data.txt`;
答案 1 :(得分:1)
在perl的反引号中调用awk
是一件非常讨厌的事情。 perl
几乎复制了所有相同的功能 - 你所做的就是引入额外的开销,低效率和引用问题(就像你在你的例子中得到的那样)。
为什么不改为:
open ( my $input, '<', 'data.txt' ) or die $!;
my ($record) = grep { (split /[:;]/)[0] eq 'Amy' } <$input>;
这复制了你正在做的事情,但你可以做一些更优雅的事情,如:
my %person;
while ( <$input> ) {
chomp;
my ( $name, @fields ) = split /[;:]/;
$person{$name} = \@fields;
}
然后:
print join " ", @{$person{'Amy'}},"\n";