1
    $chosenbeer = param('beers');
    $beerprice = `grep "$chosenbeer" beers | gawk '{gsub(/[a-zA-Z\t ]/,"");print $1}'`;

これは私が使用しようとしているコードです。$chosenbeerは以前のCGIページのリストの文字列です。選択したビールの価格を取得しようとしています。

ビールexライン:

Dogfish Head 60 Minute IPA      35.96

しかし、何らかの理由でこれは機能していません。なぜですか?$ beerpriceを印刷しても、何も表示されません。

4

1 に答える 1

9

これは、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";
于 2012-04-26T03:27:35.963 に答える