2015-01-07 2 views
0

Как я могу прочитать приведенный ниже файл yaml из скрипта perl?Невозможно прочитать полный файл yaml из скрипта perl

test.yaml

--- 
a: first 
b: second 
c: third 
--- 
a: fourth 
b: fifth 
c: seventh 

Я попытался ниже сценарий, но не повезло

use YAML; 
use Data::Dumper; 

open (YFILE, "<test.yaml") or die $!; 
my $yaml = join('', <YFILE>); 
close(YFILE) 

my $hash = YAML::Load($yaml); 

print Dumper($hash); 

Просьба предложить.

+2

Это показано в кратком обзоре модуля: [YAML] (http://p3rl.org/YAML) – choroba

+0

@choroba Я даже не знал об этом. +1. – beta0x64

+4

Важно сообщить информацию о том, что не работает. «Не повезло» не говорит нам, что пошло не так. С помощью программы, показанной выше, вы получили синтаксическую ошибку в строке 8. Вы должны сообщить нам, что эти ошибки помогут нам диагностировать проблему. –

ответ

4

Прежде всего, вы должны включить use strict и use warnings.

На вашем close(YFILE) также отсутствует полутол.

Когда я добавить точку с запятой в сценарий, я получаю этот выход:

$VAR1 = { 
     'c' => 'seventh', 
     'a' => 'fourth', 
     'b' => 'fifth' 
}; 

Благодаря @choroba, вы можете по-видимому, сделать это:

use YAML; 
use Data::Dumper; 

open (YFILE, "<test.yaml") or die $!; 
my $yaml = join('', <YFILE>); 
close(YFILE); 

my (@objs) = YAML::Load($yaml); 

print Dumper(@objs); 

Который возвращает:

$VAR1 = { 
     'c' => 'third', 
     'a' => 'first', 
     'b' => 'second' 
}; 

$VAR2 = { 
     'c' => 'seventh', 
     'a' => 'fourth', 
     'b' => 'fifth' 
}; 
+0

Спасибо за ваш отзыв Я обновил сценарий, как было предложено, но я не смог получить первую группу есть ли способ получить (обе) группы – Rukmangathan

+0

Many Thanks buddy! Его работая как шарм .. – Rukmangathan