hut*_*rca 1 formatting perl awk grep cgi
$chosenbeer = param('beers');
$beerprice = `grep "$chosenbeer" beers | gawk '{gsub(/[a-zA-Z\t ]/,"");print $1}'`;
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试使用的代码,$ chosenbeer是以前来自CGI页面的列表的字符串.我正试图让啤酒的价格被选中.
啤酒出线:
Dogfish Head 60 Minute IPA 35.96
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这是行不通的.知道为什么吗?当我打印$ beerprice时,没有任何结果.
您可以在Perl中更好地完成此操作而不会出现问题.应该更快,更灵活,更便携,更容易调试,并且不包含大的安全漏洞.
sub find_beer {
my $beer = shift;
open my $fh, "beers" or die $!;
# Take the first beer that matches
my($line) = grep /\Q$beer/, <$fh>;
return unless $line;
# I'm presuming the name and price are separated by a hard tab.
my($name, $price) = split /\t/, $line;
return { name => $name, price => $price };
}
my $beer = find_beer("Dogfish Head 60 Minute IPA");
print $beer->{price}, "\n";
Run Code Online (Sandbox Code Playgroud)