如何编写从另一个文件读取的Perl脚本?
我想写一个Perl脚本,读取一个包含数字列的file.txt文件如何编写从另一个文件读取的Perl脚本?,perl,statistics,Perl,Statistics,我想写一个Perl脚本,读取一个包含数字列的file.txt文件 20 30 12 31 20 54 63 30 21 11 12 10 然后做一些计算,比如平均值。我不知道如何声明和初始化它。 我有一个例子,在这个例子中,它寻找中间值,它声明了数据,在我的例子中,数据在一个文件中,而不是在脚本中,并且想要计算中间值。 就在那里。。 #!/usr/bin/perl #data points @vals = ( 33, 23, 55, 39, 41, 46, 38, 52, 3
20 30 12
31 20 54
63 30 21
11 12 10
然后做一些计算,比如平均值。我不知道如何声明和初始化它。
我有一个例子,在这个例子中,它寻找中间值,它声明了数据,在我的例子中,数据在一个文件中,而不是在脚本中,并且想要计算中间值。
就在那里。。
#!/usr/bin/perl
#data points
@vals = ( 33, 23, 55, 39, 41, 46, 38, 52, 34, 29, 27, 51, 33, 28 );
print "UNSORTED: @vals\n";
#sort data points
@vals = sort(@vals);
print "SORTED: @vals\n"; #test to see if there are an even number of data points
if( @vals % 2 == 0) {
#if even then:
$sum = $vals[(@vals/2)-1] + $vals[(@vals/2)];
$med = $sum/2;
print "The median value is $med\n";
}
else{
#if odd then:
print "The median value is $vals[@vals/2]\n";
}
exit;
此外壳一衬层将第一列与第二列相乘:
perl -lane 'print $F[0] * $F[1]' <FILE>
使用命令。该页面上有很多很好的示例。以下是建议使用的函数(请参阅):
Open
功能while(my$line=)
chomp
split
功能push
use Data::Dumper;
print Dumper \@vals;
使现代化
在不给出完整答案的情况下(因为这是家庭作业),请查看函数引用的每个条目中的示例代码
以下是一些让您开始学习的内容:
open my $filehandle, '<', $filename
or die "Couldn't open $filename";
while (my $line = <$filehandle>) {
# do stuff with $line
}
close $filehandle;
打开我的$filehandle,'谢谢你的回答。我想做一些计算。例如:要初始化,只需将“my”添加到数组中:my@vals=。。。。您还应该使用:“使用严格;使用警告”;并缩进代码!谢谢这很有效。你是一个伟大的人。(只有一个小问题,对于脚本,它给出的是行的中间值,而不是列的中间值),但很好,我会设法解决它。再次感谢。如果你觉得回复很有用,你可以“向上投票”。如果它符合您的需要,您应该“接受”回复,这就是stackoverflow的工作原理,谢谢;)这听起来很有趣,你能修改我的脚本并在上面添加一些函数吗。谢谢
use Data::Dumper;
print Dumper \@vals;
open my $filehandle, '<', $filename
or die "Couldn't open $filename";
while (my $line = <$filehandle>) {
# do stuff with $line
}
close $filehandle;