我有一个包含许多行的文件,所有这些行都是这样的:
name:country:stuff:stuff
我要做的是,如果国家/地区与用户输入的内容相匹配,则仅打印该行的名称。我无法使用STDIN
,只有在为匹配的字符串赋值时才能使用它。
例如,如果我放$country = "USA";
它会显示来自美国的每个人的名字,但是如果我放了
$country =< STDIN>;
并在我被提示时输入国家/地区不起作用。这是我到目前为止所拥有的。
system ("clear");
print ("Please enter a country\n");
open (players, "playerFile");
while (<players>) {
chomp();
@fields = split(':', $_);
$country = <STDIN>;
chomp ($country);
if ($fields[1] eq $country) {
print "$fields[0]\n";
}
}
有人能让我知道我做错了什么吗?我已经坚持了两个小时。感谢。
以下是playerFile中的一些行
Roger Federer:Switzerland:6
Stan Warinka:Switzerland:2
Novak Djokovic:Serbia:3
Ryan Harrison:USA
Andy Murray:Great Britain:4
David Ferrer:Spain:2
J M Del Potro:Argentina:3
Thomas Berdych:Czech Republic:2
答案 0 :(得分:1)
这对我有用:
use strict;
use warnings;
print ("Please enter a country\n");
my $country = <STDIN>;
chomp($country);
open (my $players, "<", "playerFile") || die "No playerfile found";
while (<$players>) {
chomp;
my @fields = split(':', $_);
print "fields[0]\n" if ($fields[1] eq $country);
}
答案 1 :(得分:0)
看起来您需要在循环之外移动您的国家/地区输入。 像这样....
use strict;
use warnings;
system ("clear");
print ("Please enter a country\n");
open (playerfile, "playerFile") || die "No playerfile found";
my $country = <STDIN>; # Get the country.
chomp($country);
while (<playerfile>) {
chomp;
my @fields = split(':', $_);
if ($fields[1] eq $country) {
print "$fields[0]\n";
}
}