我是Perl的新手,我参加了考试:
创建一个包含100个32位整数的二进制文件
将整数转换为16位浮点并保存在新的二进制文件中
将512字节标题添加到新文件中并打印新文件的内容(标题除外)
我的老师说我的convertIntegerToFloat
子程序使用了太多内存,并且printContentExceptHeader
功能不安全。请告诉我为什么?
my $name_file = 'binary';
sub convertIntegerToFloat {
open( DATA, "<$name_file" . "\.bin" ) or die "Couldn't open file\n";
open( DATA2, "+>>Float_file.bin" ) or die "Couldn't creat fiel\n";
binmode DATA2;
while ( <DATA> ) {
print DATA2 pack( "f*", unpack( "I*", $_ ) );
}
close(DATA);
close(DATA2);
unlink("$name_file\.bin");
rename( "Float_file\.bin", "$name_file\.bin" );
print "Convert succsess\n";
}
sub printContentExceptHeader {
open( DATA, "<$name_file\.bin" ) or die "Couldn't open $name_file\.bin";
seek( DATA, 512, 0 );
while ( <DATA> ) {
print unpack( "I*", $_ );
}
close(DATA);
print "\n";
}