在 perl 中执行内存文件对象的最佳方法是什么?我想把它传递给Net::SFTP::Foreign的put
方法。现在我只是使用File::Temp作为切换到内存实现的前兆。
问问题
230 次
2 回答
1
Perl 允许您打开引用标量变量而不是真实文件的文件句柄。如果 Net::SFTP::Foreign 支持真正的 Perl 级别的文件句柄,这将起作用:
my $content = "This is the content we want to put";
open( my $fh, '<', \$content ) || die "Ooops";
$sftp->put($fh, "file.txt") or die "Ooops";
请参阅 perlfunc 手册页中有关 open 函数的文档。它没有很好地宣传,但它在某处有记录。
如果 Net::SFTP::Foreign 是由 C 库实现的,则不保证可以正常工作。但是在快速查看模块后它应该可以工作,但我还没有测试过。
于 2012-09-12T08:07:03.903 回答
0
The module has an undocumented put_content
method.
$sftp->put_content($content, $remote_filename, %opts);
Don't be afraid to use it because it is not documented, it is just that the author (that's me) forgot to document it!
BTW, under the hood, this method does what pmakholm says in his post.
于 2012-09-12T08:32:05.340 回答