perl rmtree, выбрасывающий пустое исключение - PullRequest
0 голосов
/ 25 июня 2011

У меня очень странно, когда я использую rmtree ("C: \ myfolder");и он выдает какое-то исключение, но делает то, что должен.

Я заключил это в

eval {
  rmtree("C:\myfolder");
};
if($@) {
   print $@;
}

Если папка существует, я получаю исключение, даже если папкауспешно удаленБрошенное исключение вообще ничего не значит.Я даже попытался установить rmtree ("C: \ myfolder", {verbose => 1}) в rmtree, но то же самое.

Мой текущий хак -

eval {
   eval {
  rmtree("C:\myfolder");
  };
};
if($@) {
   print $@;
}

Ответы [ 2 ]

2 голосов
/ 25 июня 2011

Как вы можете обнаружить пустое исключение ??

С perldocs :

remove_tree( 'foo/bar', 'bar/rat', {error => \my $err} );
if (@$err) {
    for my $diag (@$err) {
        my ($file, $message) = %$diag;
        if ($file eq '') {
            print "general error: $message\n";
        }
        else {
            print "problem unlinking $file: $message\n";
        }
    }
}
else {
    print "No error encountered\n";
}

В Windows я знаю, что относительные пути работают с /. Я думаю, что абсолютные пути тоже работают с /!

remove_tree("C:/myfolder"); #this should work
2 голосов
/ 25 июня 2011

попробуйте избежать обратной косой черты, т. Е.

"C: \\ myfolder"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...