Как добавить в файл? - PullRequest
       8

Как добавить в файл?

0 голосов
/ 30 июля 2011

Я пытаюсь добавить текст в конец файла в Mac OSX, имеющего расширение .conf. Я использую следующий код для этого:

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

где

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

Так что в основном это файл .conf. И даже если он не возвращает никаких ошибок, но он ничего не добавляет в конец файла. Я проверил все разрешения, и была предоставлена ​​привилегия чтения-записи. Есть ли что-то, что я здесь скучаю?

Ответы [ 2 ]

6 голосов
/ 30 июля 2011

Прежде всего use strict и use warnings.Это привело бы к ошибкам и предупреждениям для вашего кода.

В Mac OS разделитель пути - /, как в других Unix-подобных системах, а не \.Чтобы присвоить строку переменной, используйте кавычки.Не используйте open(2), но open(3) (оператор стрелки не работает при вашем использовании open в любом случае), и считается плохой практикой использовать обработчики файлов bareword.

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 голос
/ 30 июля 2011

Страдает от буферизации? Вызовите close NEW, когда закончите писать, или вызовите (*NEW)->autoflush(1) после его открытия, чтобы заставить Perl сбрасывать вывод после каждого отпечатка.

Также проверьте возвращаемые значения вызовов open и print. Если любая из этих функций завершится ошибкой, они вернут false и установят переменную $!.

И я рекомендую использовать strict и warnings.

...