为什么我不能使用perl中的字符串输入?

时间:2014-12-01 02:23:40

标签: perl

我有一个包含许多行的文件,所有这些行都是这样的:

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

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";
   }
}