如何追加到文件?
我正在尝试将一些文本附加到 Mac OSX 中具有 .conf 扩展名的文件末尾。我使用以下代码来执行此操作:
open NEW , ">>$self->{natConf}";
print NEW "$hostPort = $vmIP";
其中
$self->{natConf} = \Library\Preferences\VMware Fusion\vmnet8\nat.conf
所以基本上这是一个 .conf 文件。尽管它没有返回任何错误,但它没有将任何内容附加到文件末尾。我检查了所有权限,已经提供了读写权限。我在这里缺少什么吗?
I am trying to append some text to the end of a file in Mac OSX having a .conf extension. I am using the following code to do that:
open NEW , ">>$self->{natConf}";
print NEW "$hostPort = $vmIP";
where
$self->{natConf} = \Library\Preferences\VMware Fusion\vmnet8\nat.conf
So basically this is a .conf file. And even though its not returning any error, but it is not appending anything to the end of the file. I checked all the permissions, and read-write privilege has been provided. Is there anything I am missing here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先
使用严格
和使用警告
。这会给您的代码引发错误和警告。在 Mac OS 上,路径中的分隔符是
/
,就像其他类 UNIX 系统中的那样,而不是\
。要将字符串分配给变量,请使用引号。
不要使用
open(2)
而是使用open(3)
(无论如何,箭头运算符在 open 的使用中不起作用),并且使用裸字文件处理程序被认为是不好的做法。First of all
use strict
anduse warnings
. This would have thrown errors and warnings for your code.On Mac OS the delimiter in a path is
/
like in other unix-like systems not\
.To asign a string to a variable use quotation marks.
Do not use
open(2)
butopen(3)
(the arrow operator does not work in your usage of open anyway) and it is considered bad practice to use bareword filehandlers.遭受缓冲之苦?写完后调用
close NEW
,或者在打开它后调用(*NEW)->autoflush(1)
以强制 Perl 刷新每次打印后输出。另请检查
open
和print
调用的返回值。如果这些函数中的任何一个失败,它们将返回 false 并设置$!
变量。我赞同关于使用
严格
和警告
的建议。Suffering from buffering? Call
close NEW
when you are done writing to it, or call(*NEW)->autoflush(1)
on it after you open it to force Perl to flush the output after every print.Also check the return values of the
open
andprint
calls. If either of these functions fail, they will return false and set the$!
variable.And I second the recommendation about using
strict
andwarnings
.