1

perlでメモリ内ファイルオブジェクトを実行する最良の方法は何ですか? これをNet::SFTP::Foreignputメソッドに渡したいと思います。現在、インメモリ実装に切り替える前兆としてFile::Tempを使用しています。

4

2 に答える 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

モジュールには文書化されていないput_contentメソッドがあります。

$sftp->put_content($content, $remote_filename, %opts);

文書化されていないため、使用することを恐れないでください。作成者 (それは私です) が文書化するのを忘れただけです!

ところで、内部では、このメソッドは pmakholm が投稿で述べていることを実行します。

于 2012-09-12T08:32:05.340 に答える