2015-01-21 2 views
1

Я использую модуль CPAN YAML::XS. Как я могу проверить ошибку, если он не работает при загрузке файла YAML? В документации ничего не говоритYAML :: Проверка ошибки XS

use YAML::XS qw/LoadFile/; 
$CONFIG_DATA = LoadFile($CONFIG_FILE); 

Я хочу напечатать осмысленное сообщение, если $ CONFIG_FILE имеет синтаксические ошибки.

+0

Любой причину, почему упаковка LoadFile вызова в Eval Блок {} не будет работать для вас? –

+1

Попробуйте ввести некоторые ошибки синтаксиса и посмотреть, что он делает. – Axeman

+0

@PaulAllen. Спасибо за подсказку, полностью пропустил это. Я уже использовал этот хак. – sam

ответ

1

Вы можете поймать ошибку с eval, хотя вы правы, что документы не говорят вам, что LoadFile умрет, если он обнаруживает ошибку:

use v5.10; 
use YAML::XS qw/LoadFile/; 
use Data::Dumper; 

my $hash = eval { LoadFile($ARGV[0]) }; 
if([email protected]) { 
    say "I found an error: [email protected]"; 
    } 
say Dumper($hash); 
Смежные вопросы