我想在每一行添加数字。 例如,我的行后面没有,
@lines = ("1 .2 .3 .4 .5","2 .7 .8 .8 .10 "," 3 .12 .13 .14 .15");
我想分别为每一行添加数字。每行中的 第一个数字 (1,2和3)是行号,我 不想包含 < / strong>总结。
我试过了:
($total+=$_) for @temp[1..$#temp];
print "The row adds up to $total";
它给了我最后一行的总数,即第3行= .54
请建议我如何解决此问题。
谢谢
答案 0 :(得分:3)
只需将每个字符串拆分为空格(split
的默认值),然后使用splice
提取除第一个元素以外的所有字符串。使用map
生成一个要添加的长号列表。代码看起来像这样
use strict;
use warnings;
my @lines = ("1 .2 .3 .4 .5", "2 .7 .8 .8 .10 ", " 3 .12 .13 .14 .15");
my $total;
$total += $_ for map { my @f = split; splice @f, 1; } @lines;
print $total;
<强>输出强>
4.34
修改强>
我的道歉 - 我刚刚注意到你想要分别为每个字符串的总数。这是我的解决方案
use strict;
use warnings;
my @lines = ("1 .2 .3 .4 .5","2 .7 .8 .8 .10 "," 3 .12 .13 .14 .15");
print "$_\n" for map {
my @f = split;
my $total;
$total += $_ for splice @f, 1;
$total;
} @lines;
<强>输出强>
1.4
2.4
0.54
答案 1 :(得分:2)
实际上0.54是第3行imho的正确总和。 这是一个代码片段,用于计算所有3行的总和。
@lines = ("1 .2 .3 .4 .5","2 .7 .8 .8 .10 "," 3 .12 .13 .14 .15");
foreach (@lines) {
@row=split;
$total=0;
$total+=$_ for @row[1..$#row];
print "Result $row[0]: $total\n";
}
输出:
Result 1: 1.4
Result 2: 2.4
Result 3: 0.54