我想把数据写入文件,但是文件句柄需要用sudo打开,否则就会得到拒绝访问的错误。但似乎在Perl中不可能像下面这样做?
sudo open (FH, "> $filename") or die "$!\n";
我想把数据写入文件,但是文件句柄需要用sudo打开,否则就会得到拒绝访问的错误。但似乎在Perl中不可能像下面这样做?
sudo open (FH, "> $filename") or die "$!\n";
sudo
是一个Linux命令,它不是Perl函数。你可以使用sudo运行整个Perl脚本(sudo perl script.pl
),或者你可以通过分配给$<
和$>
特殊变量来在Perl中更改你的用户ID(参见perlvar-Perl预定义变量),这将需要额外的权限。
顺便说一句,open
在失败时会设置$!
而不是$@
。
open(my $pipe_fh, '-|', 'sudo', 'cat', $filename) or die "Unable to open pipe: $!\n";
它创建另一个进程来解决您的问题,可能通过以正确的权限运行脚本来更好地解决。
cat
读取文件一样,你可能会滥用tee
来写文件。当然,这将导致将你写的所有内容也发送到STDOUT。这条路充满了疯狂...... - tjd