J'ai un petit soucie avec un DBM, je n'arrive pas a récupérer mes données.

Voila mon script de teste :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
#!/usr/bin/perl -w
use strict;
use AnyDBM_File;
use DB_File;
use diagnostics;
my @i = qw/ a b c d /;
 my $new_filename = "test.dat";
 my %newhash = ();
tie %newhash,  'DB_File', $new_filename, O_CREAT|O_RDWR;
$newhash{'teste'} = [@i];
pour récupérer mes données je fait comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
  tie(my %HIST, 'DB_File', 'test', 1, 0);
  my $i = $HIST{'teste'};
  print @$i[0];
  untie(%HIST)
le problème ce trouve la
my $i = $HIST{'teste'};
print @$i[0];
je ne comprend pas ou est mon erreur d'autant quand faisant un teste avec un autre script que voila :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
#!/usr/bin/perl -w
use strict;
my @i = qw/ a b c d /;
 
my %l;
 
$l{'reteste'} = [@i];
 
my $m = $l{'reteste'};
 
print @$m[2];
Tout vas bien

Perl me renvoie l'erreur suivante :


Can't use string ("ARRAY(0x1a01354)") as an ARRAY ref while "strict refs" in
use at C:\DOCUME~1\Siaoly\Bureau\cache.pl line 22 (#1)
(F) Only hard references are allowed by "strict refs". Symbolic
references are disallowed. See perlref.

Uncaught exception from user code:
Can't use string ("ARRAY(0x1a01354)") as an ARRAY ref while "strict refs" in use at C:\DOCUME~1\Siaoly\Bureau\cache.pl line 22.
at C:\DOCUME~1\Siaoly\Bureau\cache.pl line 22