我对如何保存IO :: Handle文件感到有些困惑。
这就是我所拥有的
use IO::File;
my $iof = IO::File->new;
# open file
$iof->open($path, "w") || die "$! : $path";
# ensure binary
$iof->binmode;
# output file to disk
print $iof $self->File_Upload;
$iof->close;
File_Upload是通过CGI模块提供给我的IO :: Handle,用于文件上传,但文件中的输出是......
IO::Handle=GLOB(0x20dabec)
不是上传的PDF的二进制数据。
如果文件句柄中有文件,如何保存?
如果我有IO :: Handle,我需要IO :: File吗?
感谢您的意见。
1DMF
答案 0 :(得分:1)
使用readline
CGI
提供的文件句柄中读取
print $iof readline($self->File_Upload);
您的输出内容为'IO::Handle=GLOB(0x20dabec)'
这一事实暗示$self->File_Upload
属于IO::Handle
类型,因此应予以对待。
在列表上下文中使用readline
会拉出所有行,如上所示。或者,您可以使用对象方法->getlines()
:
print $iof $self->File_Upload->getlines();
答案 1 :(得分:1)
如何啜饮文件?
my $fh = $self->File_Upload();
my $file = do { local $/; <$fh> };
是的,除了通常的globs(STDIN
),对globs(来自open my $fh, ...
)和IO scalars(*STDIN{IO}
)的引用之外,这适用于IO :: Handle对象。 / p>
然后打印出来,
print($iof $file);
在这种特殊情况下,您可以简单地使用
print($iof $self->File_Upload()->getlines());