Bonjour,

Ca va vous sembler con, mais j'aimerais comprendre pourquoi mon interpréteur gueule. Ce code marche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl
use strict;
use warnings;
 
use YAML;
use Data::Dumper;
 
open my $fh, '<', 'config.yml'
        or die "can't open config file: $!";
 
my $yml = do { local $/; <$fh> };
 
my $config = Load($yml);
print Dumper($config), "\n";
#print "$_ $config{$_}\n" for (keys %config);
#while (my ($k,$v)=each %config){print "$k $v\n"}
#print "$config\n";
Sortie :
# ./yaml2.pl
$VAR1 = {
'NAME' => 'John Doe',
'CONTACTS' => [
'John',
'Paul',
'George'
],
'PHONE' => {
'Work' => '123-5555',
'Home' => '123-4444'
},
'ADDRESS' => '123 Main St.'
};
Ce code marche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl
use strict;
use warnings;
 
use YAML;
use Data::Dumper;
 
open my $fh, '<', 'config.yml'
        or die "can't open config file: $!";
 
my $yml = do { local $/; <$fh> };
 
my $config = Load($yml);
#print Dumper($config), "\n";
#print "$_ $config{$_}\n" for (keys %config);
#while (my ($k,$v)=each %config){print "$k $v\n"}
print "$config\n";
Sortie :
# ./yaml2.pl
HASH(0x1973568)
Ce code ne marche pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl
use strict;
use warnings;
 
use YAML;
use Data::Dumper;
 
open my $fh, '<', 'config.yml'
        or die "can't open config file: $!";
 
my $yml = do { local $/; <$fh> };
 
my $config = Load($yml);
#print Dumper($config), "\n";
print "$_ $config{$_}\n" for (keys %config);
#while (my ($k,$v)=each %config){print "$k $v\n"}
#print "$config\n";
Sortie:
# ./yaml2.pl
Global symbol "%config" requires explicit package name at ./yaml2.pl line 15.
Global symbol "%config" requires explicit package name at ./yaml2.pl line 15.
Execution of ./yaml2.pl aborted due to compilation errors.
Ce code ne marche pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl
use strict;
use warnings;
 
use YAML;
use Data::Dumper;
 
open my $fh, '<', 'config.yml'
        or die "can't open config file: $!";
 
my $yml = do { local $/; <$fh> };
 
my $config = Load($yml);
#print Dumper($config), "\n";
#print "$_ $config{$_}\n" for (keys %config);
while (my ($k,$v)=each %config){print "$k $v\n"}
#print "$config\n";
[/CODE]
Sortie :
# ./yaml2.pl
Global symbol "%config" requires explicit package name at ./yaml2.pl line 16.
Execution of ./yaml2.pl aborted due to compilation errors.
Mon fichier .yml juste pour la forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
---
ADDRESS: 123 Main St.
CONTACTS:
  - John
  - Paul
  - George
NAME: John Doe
PHONE:
  Home: 123-4444
  Work: 123-5555
Je veux bien résoudre le problème, mais j'aimerais savoir ce que perl me réclame là du coup, car ma variable est bien déclarée.

Merci beaucoup à vous les experts.