Dear Perlers,

I am saving the data structure to a file and retrieving it back again, but, 
when I 'use strict' it is giving the following error message

Global symbol "%game" requires explicit package name


It is working fine without 'strict'. Please help

[code]
#Code for saving the data structure
use strict;
use warnings;
use Data::Dumper;

my %game = (
            worldcup => {
            series => "WC 2011",
            play => ["monday", "wednesday", "friday"],
            players => [
                    {name => "dhoni", role => "captain", country => "india"},
                    {name => "tendulkar", role => "batsman", country => 
"india"},
                    {name => "yuvraj", role => "batsman", country => "india"}
            ],
            },
            
            ipl => {
            series => "Edition 5",
            play => ["saturday", "sunday"],
            players => [
                    {name => "sehwag", role => "captain", country => "india"},
                    {name => "muralidharan", role => "batsman", country => 
"srilanka"},
                    {name => "gayle", role => "batsman", country => 
"westindies"}
            ],
            },
);

$Data::Dumper::Purity = 1;
open my $fout, '>', 'gameinfo.perldata' or die "Cannot open file ($!)";
print $fout Data::Dumper->Dump([\%game], ['*game']);
close $fout or die "Cannot open file ($!)";
[/code]

[code]
#Code for reading the data structure. Please note that, I have disabled 
'strict' and 'warnings'

#use strict;
#use warnings;
use Data::Dumper;

open my $fin, '<', 'gameinfo.perldata' or die "Cannot open file ($!)";
undef $/; #read in file all at once
eval <$fin>;
if($@) {
die "Can't recreate game data from gameinfo.perldata $@";
}
close $fin or die "Cannot open file ($!)";

print "Name : ", $game{ipl}->{players}->[1]->{name}, "\n";
print "Role : ", $game{ipl}->{players}->[1]->{role}, "\n";
print "Country : ", $game{ipl}->{players}->[1]->{country}, "\n";
[/code]

I have also tried using 'do' using strict but in vain

[code]
#use strict;
#use warnings;
use Data::Dumper;

do "gameinfo.perldata" or die "Can't recreate gameinfo: $! $@";

print "Name : ", $game{ipl}->{players}->[1]->{name}, "\n";
print "Role : ", $game{ipl}->{players}->[1]->{role}, "\n";
print "Country : ", $game{ipl}->{players}->[1]->{country}, "\n";
[/code]

[output]
Name : muralidharan
Role : batsman
Country : srilanka
[/output]

My question is, how to use the above program with strict enabled?

Thank you.
 
best,
Shaji 
-------------------------------------------------------------------------------
Your talent is God's gift to you. What you do with it is your gift back to God.
-------------------------------------------------------------------------------

Reply via email to