3

データをファイルに書き込みたいのですが、ファイル ハンドルを sudo で開く必要があります。そうしないと、アクセス許可拒否エラーが発生します。しかし、perlでは次のようなことはできないようですか?

sudo open (FH, "> $filename") or die "$!\n";
4

2 に答える 2

5

sudoは Linux コマンドであり、Perl 関数ではありません。sudo ( ) を使用して Perl スクリプト全体を実行することも、特別な変数 ( perlvar - Perl の事前定義された変数sudo perl script.plを参照)を割り当てて Perl でユーザー ID を変更することもできます。$<$>

ところで、では​​なく、失敗時にopen設定します。$!$@

于 2013-09-09T16:08:51.467 に答える
0
open(my $pipe_fh, '-|', 'sudo', 'cat', $filename) or die "Unable to open pipe: $!\n";

問題を解決するための別のプロセスが作成されますが、正しい権限でスクリプトを実行することで解決できる可能性があります。

于 2013-09-09T16:34:30.543 に答える