我正在尝试为 perl 文件上传脚本编写一些单元测试。我对 perl 还是很陌生,所以我在实现我期望的代码结果时遇到了一些问题。
基本上我的思考过程是我可以传递一个 test_only 属性以及请求,该属性将告诉脚本只抓取系统上已经存在的文件,而不是尝试使用上传的文件。
我创建了一个测试文件并将其放在我的 output/tmp 目录中。我确保将其权限设置为 775。它只是一个简单的 .txt 文件,上面写着“我是一个测试文件”。
我目前期望发生的是,当我运行我的测试脚本时,我应该看到打印到错误日志中的文件内容以及对缓冲区的一些引用(这样我就可以验证文件是否被正确打开)。但是,这没有发生,错误日志中没有任何内容。我想知道文件是否正确打开?
我确定我只是缺少有关 perl 如何打开文件的基本知识。任何帮助将不胜感激。谢谢 :)
这是我的代码的适当片段:
my $test_only = 1;
my $tmp_uploads_path = "/home/my_instance/output/tmp/";
if($test_only)
{
#put simulated file handle and file name here
$file = "";
$file_name = "test_file.txt";
}
else
{
$file = $q->upload('file')
|| die "No file data sent\n $!";
$file_name = $q->param('file_name')
|| die "No file_name sent\n $!";
}
########
#SAVE THE UPLOAD
########
my $bufsize = 1024;
my $buffer = '';
open(my $TMPFILE, ">".$tmp_uploads_path.$file_name);
binmode $TMPFILE;
print STDERR "=> ".Dumper($TMPFILE)."\n";
while(read ($TMPFILE, $buffer, $bufsize)){
print STDERR "=> ".Dumper($TMPFILE)."\n";
print STDERR "=> ".Dumper($buffer)."\n";
print $TMPFILE $buffer;
}
close($TMPFILE);