[英]awk command in perl scripts getting error
我在我的perl腳本中運行以下代碼。
my $record = `awk -F'[:;]' '$1 == "Amy"' data.txt`;
但是,這給了我錯誤:
awk: syntax error at source line 1
context is
>>> == <<<
awk: bailing out at source line 1
是什么導致此錯誤?
嘗試轉義$符號:
my $record = `awk -F'[:;]' '\$1 == "Amy"' data.txt`;
從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";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.