Я следующий код, который пытается записать содержимое в файл журнала:«не может открыть файл» для Perl под Cygwin
sub write_log
{
local($f) = "$log_dir/$log_file";
$OUTPUT_FPATH = $f;
print "$OUTPUT_FPATH \n";
open(OUTPUT_FPATH, ">$f") ||
die "Error: cannot open output file '$f'\n";
}
я могу видеть «OUTPUT_FPATH» точку в правильном месте, как
/cygdrive/c/mylog/verify.log.
Я также использовал «эхо„тест“> /cygdrive/c/mylog/verify.log» в Cygwin консоли непосредственно, которая прекрасно справляется
Но почему я до сих пор получить «не могу открыть ....», когда Я запускаю скрипт perl?
И я уверен, что этот код проверен, так что может быть, я что-то делаю неправильно, правильно? или что еще это может быть?
прилагается простой пример, чтобы воспроизвести ошибку:
eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"[email protected]"}'
& eval 'exec /usr/bin/perl -S $0 $argv:q'
if $running_under_some_shell;
sub write_log
{
local($f) = "/cygdrive/c/test/log.log";
$RT_OUTPUT_FH = $f;
printf $f;
open(RT_OUTPUT_FH, ">$f") || die "Error: cannot open output file '$f' \n";
}
sub main
{
write_log("hahahaha");
}
&main();
Та же ошибка с "!$"
->no such file or directory
в то время как он все еще работает, как это в Cygwin promopt
echo "hahahahahaha" > /cygdrive/c/test/log.log
Используйте переменную сообщения об ошибке '$!' В сообщении 'die', чтобы узнать, почему open не удается. Например. 'die" Невозможно открыть $ f: $! "' Вы также должны знать, что завершение сообщения 'die' с помощью новой строки' \ n' запрещает отображение номера строки в сообщении die. – TLP
@TLP не получил такого файла или каталога .... – thundium
Я не знаком с тем, как cygwin обрабатывает пути, но это кажется вероятным источником ошибки. – TLP