我正在尝试将一些文本附加到Mac OSX中具有.conf扩展名的文件的末尾。我使用以下代码来执行此操作:
open NEW , ">>$self->{natConf}";
print NEW "$hostPort = $vmIP";
其中
$self->{natConf} = \Library\Preferences\VMware Fusion\vmnet8\nat.conf
所以基本上这是一个.conf文件。即使它没有返回任何错误,但它没有附加任何文件的末尾。我检查了所有权限,并提供了读写权限。我在这里有什么遗失。
答案 0 :(得分:6)
首先use strict
和use warnings
。这会给你的代码抛出错误和警告。
在Mac OS上,路径中的分隔符为/
,与其他类似unix的系统\
不同。
要将字符串设置为变量,请使用引号。
不要使用open(2)
但open(3)
(箭头操作符无论如何都不能用于打开),使用裸字文件处理程序被认为是不好的做法。
use strict;
use warnings;
# your code here
$self->{natConf} = '/Library/Preferences/VMware Fusion/vmnet8/nat.conf';
# more code here
open my $fh, '>>', $self->{natConf} or die "open failed: $!\n";
print $fh "$hostPort = $vmIP";
close $fh;
# rest of code here
答案 1 :(得分:1)
遭受缓冲?完成写入后调用close NEW
,或者在打开它后调用(*NEW)->autoflush(1)
以强制Perl在每次打印后刷新输出。
同时检查open
和print
来电的返回值。如果这些函数中的任何一个失败,它们将返回false并设置$!
变量。
我接下来关于使用strict
和warnings
。