-1

我有一个输入,它看起来像这样

输入文件

ID                   Score1  Score2
ABC                     1      2
DEF                     30     50

我想得到每行的ID和两个分数,我成功了,但是我想问有没有什么函数可以得到一个单词?这意味着我调用这个函数三次然后我可以得到 ID 和两个分数....

while( eof(Input) !=1)
{
    $C = getc(Input);
    if($C eq "\n")
    {
        $Signal = 0;
        print Output @Elements;
        print Output "\n";
        @Elements = ();
    }
    elsif($C ne " ")
    {
        if($Signal == 1)
        {
            push(@Elements,"-");
            $Signal = 0;
        }
        push(@Elements,$C);
    }
    else
    {
        $Signal = 1;
    }
}

我找到

$Line = readline(*Input);
@Line_elements = split(" ",$Line);

能行得通 .....

谢谢

4

2 回答 2

1

我不确定到底应该输出什么(更好的是提供精确的样本输入和精确的样本输出,但是如果您只想要以女巫字符串 id 开头的行,然后是两个数字分数,则可以使用类似的东西:

while ( $line = <STDIN> ) {
  my ($id, $score1, $score2) = ( $line =~ /^([A-Z]+)\s+([0-9]+)\s+([0-9]+)$/ );
  print $id;
}
于 2013-03-09T12:17:04.700 回答
0

你也可以这样做:

my ($id, $score1, $score2) = split / +/, $Line;

//+/是正则表达式;它关心一个或多个空格

于 2013-03-09T12:04:02.857 回答