Bonjour,
je n'arrive pas à comprendre comment récupérer et bénir un objet enregistré dans un fichier avec Storable (ce n'est peut-être pas la bonne méthode). J'ai consulté, entre autre, ce billet mais j'avoue ne pas y comprendre grand chose. J'arrête de blablater et livre mon code :

Programme principal :
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
18
19
#!/usr/bin/env perl
use strict;
use warnings;
use diagnostics;
use Smart::Comments;
use Data::Dumper;
use Storable;
 
use Test;
 
if ( -f 'backup' ) {
    my $truc = retrieve 'backup' ;
    print Dumper $truc;
} else {
    my $premier = Test->new;
    $premier->get_first;
    ### $premier
    store \$premier , 'backup';
}
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
18
19
20
21
22
23
24
25
26
27
28
29
package Test ;
use strict ;
use warnings ;
use diagnostics ;
use Smart::Comments;
use Storable ;
use Data::Dumper ;
 
# my @liste;
 
sub new {
    my $r_test = {
        "first"  => "un" ,
        "second" => "deux" ,
        "third"  => "trois"
    } ;
    my $self = shift ;
    bless $r_test, $self ;
    # si aucun arg. retourne les val. par défaut
    return ($r_test) if ( ! defined ($_[0]) ) ;
 
    # initialisation des menbres si arguments passés
    $r_test->{"first"}  = shift ;
    $r_test->{"second"} = shift if ( defined ($_[0]) );
    $r_test->{"third"}  = shift if ( defined ($_[0]) ) ;
    return ($r_test) ;
}
 
1;
Jusque là tout va bien, le programme m'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
$VAR1 = \bless( {
                   'first' => 'un',
                   'second' => 'deux',
                   'third' => 'trois'
                 }, 'Test' );
Où je vois bien que c'est un objet (\bless) appartenant au package "Test". Mais comment récupérer 'first', 'second' et 'third' pour les passer en argument de la méthode Test::new ? Je sèche.