我想将数据写入文件,但文件句柄应该用 sudo 打开,否则我会收到权限被拒绝错误。但是看起来像下面这样的东西在 perl 中是不可能的?
sudo open (FH, "> $filename") or die "$!\n";
sudo
是一个 linux 命令,它不是 Perl 函数。您可以使用 sudo ( ) 运行整个 Perl 脚本sudo perl script.pl
,或者您可以通过分配特殊变量(请参阅perlvar - Perl 预定义变量$<
)来更改您在 Perl 中的用户 ID ,无论如何,这只有在额外的权限下才有可能。$>
顺便说一句,open
设置$!
失败,而不是$@
.
open(my $pipe_fh, '-|', 'sudo', 'cat', $filename) or die "Unable to open pipe: $!\n";
它创建了另一个过程来解决您的问题,通过运行具有正确权限的脚本可以更好地解决该问题。