データをファイルに書き込みたいのですが、ファイル ハンドルを sudo で開く必要があります。そうしないと、アクセス許可拒否エラーが発生します。しかし、perlでは次のようなことはできないようですか?
sudo open (FH, "> $filename") or die "$!\n";
sudo
は Linux コマンドであり、Perl 関数ではありません。sudo ( ) を使用して Perl スクリプト全体を実行することも、特別な変数 ( perlvar - Perl の事前定義された変数sudo perl script.pl
を参照)を割り当てて Perl でユーザー ID を変更することもできます。$<
$>
ところで、ではなく、失敗時にopen
設定します。$!
$@
open(my $pipe_fh, '-|', 'sudo', 'cat', $filename) or die "Unable to open pipe: $!\n";
問題を解決するための別のプロセスが作成されますが、正しい権限でスクリプトを実行することで解決できる可能性があります。