如何附加到文件?

时间:2011-07-29 22:48:53

标签: perl perl-module

我正在尝试将一些文本附加到Mac OSX中具有.conf扩展名的文件的末尾。我使用以下代码来执行此操作:

open NEW , ">>$self->{natConf}";
print NEW "$hostPort = $vmIP";

其中

$self->{natConf} = \Library\Preferences\VMware Fusion\vmnet8\nat.conf

所以基本上这是一个.conf文件。即使它没有返回任何错误,但它没有附加任何文件的末尾。我检查了所有权限,并提供了读写权限。我在这里有什么遗失。

2 个答案:

答案 0 :(得分:6)

首先use strictuse 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在每次打印后刷新输出。

同时检查openprint来电的返回值。如果这些函数中的任何一个失败,它们将返回false并设置$!变量。

我接下来关于使用strictwarnings

的建议