将derefrenced变量的输出打印到文件中

时间:2010-12-23 07:03:11

标签: perl

我写了一个模块,只是为了将文件分成训练和测试集。输出很好,但如果两个引用变量@$test@$training的输出被重定向到两个不同的文件,那么学生将非常容易。这是代码:

use Cut;

my($training,$test)=Cut::cut_80_20('data.csv') ;
print"======TRAINING======\n"."@$training\n";
print"======TEST==========\n"." @$test\n";

2 个答案:

答案 0 :(得分:3)

print在输出数据之前采用可选的文件句柄。打开文件并打印出来:

open( my $training_fh, '>', 'training.csv' ) or die "Couldn't open training.csv: $!";
print $training_fh "======TRAINING======\n"."@$training\n"; 
open( my $test_fh, '>', 'test.csv' ) or die "Couldn't open test.csv: $!";
print $test_fh "======TEST==========\n"." @$test\n";

答案 1 :(得分:2)

这很容易:

open my $fh1, '>', "training.out" or die "failed to open training.out ($!)";
print $fh1 "======TRAINING======\n";
print $fh1 "@$training\n";
close $fh1;
open my $fh2, '>', "test.out" or die "failed to open test.out ($!)";
print $fh2 "======TEST==========\n";
print $fh2 "@$test\n";
close $fh2;

请注意print语句中的文件句柄后没有逗号。您可以根据需要添加换行符等。