我有输入,看起来像这样
输入文件
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);
可以工作.....
感谢
答案 0 :(得分:1)
我不确定究竟应该输出什么(更好的是提供精确的样本输入和精确的样本输出,但如果你只想要开始字符串id然后两个数字分数的行,你可以使用这样的东西:
while ( $line = <STDIN> ) {
my ($id, $score1, $score2) = ( $line =~ /^([A-Z]+)\s+([0-9]+)\s+([0-9]+)$/ );
print $id;
}
答案 1 :(得分:0)
你也可以这样做:
my ($id, $score1, $score2) = split / +/, $Line;
/ + /是正则表达式;它需要关注一个或多个空格