2016-09-27 5 views
0

Кто-нибудь видит проблему здесь?Почему я вызываю «или умереть» при попытке открыть Filehandle?

use FindBin '$Bin'; 

$scriptdir = $Bin; 
$folder= "64521459"; 
$file = "201608291350_60002015_1_Log-Minim.csv"; 

print "$scriptdir\\OK\\$folder\\$file"; 
open (OKBLABLA, ">", "$scriptdir\\OK\\$folder\\$file") or die "Can't create OK folder"; 
print OKBLABLA "success"; 
close OKBLABLA; 

Похоже, что $folder часть вызывает проблемы; когда я удаляю его, он работает - любая идея, почему? Разве скрипт не создаст новую директорию?

+0

'open' не создает каталоги ... Вместо этого попробуйте' mkdir' или родителям каталога, который вы хотите создать, не существует, то функция 'make_path' из [' File :: Path'] (http://perldoc.perl.org/File/Path.html). – Dada

+0

@Dada thanks, используется «use File :: Path qw/make_path /;», работает –

+1

Почему вы не попросили Perl включить причину ошибки 'open' в сообщение об ошибке? 'die" Невозможно создать папку OK: $! \ n ";' –

ответ

3

Нет, open не может создать несуществующий каталог на любой платформе на любом языке, который я знаю.

+0

, но она создает файлы, было легко думать, что она также создавала бы папки. uhm, также спасибо за исправление моего сообщения –

1

Операция печати относится к переменной $folder.

Но открытый оператор относится к несуществующей переменной $ordner.

Используйте use strict; use warnings; в начале вашего скрипта, чтобы легко найти такие проблемы.

+0

извините, это просто перевод thingy как «ordner» в Германии означает «Папка». так что это не проблема –

+4

@ZesaRex. Скопируйте и вставьте точный код, который вы используете. В противном случае люди тратят свое время на поиски ошибок, которых нет в вашем фактическом коде, и вы должны тратить время на редактирование своего вопроса и ответы на подобные ответы. Нет необходимости переводить имена переменных на английский; мы все можем прочитать Perl. – ThisSuitIsBlackNot

+0

отлично, сделаю это в следующий раз :) –