my $fruit;
my $quantity = <STDIN>;
my $results = split(/,|:/,$quantity);
foreach my $result(@results){
my ($fruit_name, $value) = split("=", @result);
if($fruit_name == "apple") {
$fruit = $value;
my $ratio = join(":", $fruit);
print "My ratio = $ratio";
}
}
我的輸出是:我的比率 = 12 來自輸入:apple=1,apple=2。
我想要的輸出:
My ratio = 1:2.
感謝您的所有幫助。
uj5u.com熱心網友回復:
也許這就是你想要做的
use strict;
use warnings;
use feature 'say';
chomp(my $quantity = <DATA>); # chomp removes newline from input
my @results = split /[,:]/, $quantity; # using [] to create a character class
my @nums;
foreach my $result (@results){
my ($fruit_name, $value) = split "=", $result;
if ($fruit_name eq "apple") { # have to use eq when comparing strings
push @nums, $value; # store value for later printing
}
}
say "My ratio = ", join ":", @nums;
__DATA__
apple=1,apple=2
輸出:
My ratio = 1:2
您的代碼有這些錯誤。
- 變數
@result應該是$result。如果您use strict啟用了,您會知道這一點。 - 您
=在要使用數值相等測驗的地方使用賦值==。由于您沒有使用use warnings,因此您對此一無所知。此外,您應該使用eq字串。 - 你有一個變數
$value,你移動到$fruit它,你移動到它$ratio。這是令人困惑和毫無意義的。 - 您不能
join只使用一個值。然后它什么也不做,因為您至少需要 2 個值才能加入。 - 您的代碼的輸出是
My ratio = 1My ratio = 2,不是My ratio = 12。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/417701.html
標籤:
上一篇:從EventHub讀取特定訊息
