OVH Cloud OVH Cloud

problème d'objet

2 réponses
Avatar
julien
Bonjour
Dans mon packahe Perso::text, je crée un nouvel objet par :
sub new{
my ($class, %arg) = @_;
return bless {
_file => $arg{_file} || '',
_replace => %{$arg{replace}},
_suppress => @{$arg{suppress}},
_options => %{$arg{options}}
}, $class;
}

Dans mon programme de test, j'ai:
my $object = Perso::text->new(options =>{'ignore_roman' => 'vert'},
replace =>{}, suppress =>[]);
my %temp = $object->{_options};
print $temp{'ignore_roman'}."\n";

J'ai comme message d'erreur: "Odd number of elements in anonymous hash
at Perso/text.pm line 14"
_options contient en fait uniquement la clé "ignore_roman", mais pas sa
valeur 'vert'.

Je ne vois pas ce qui cloche dans ce que j'ai fait.

Merci
Julien

2 réponses

Avatar
dominix
julien wrote:
Bonjour
Dans mon packahe Perso::text, je crée un nouvel objet par :
sub new{
my ($class, %arg) = @_;
return bless {
_file => $arg{_file} || '',
_replace => %{$arg{replace}},
_suppress => @{$arg{suppress}},
_options => %{$arg{options}}
}, $class;
}

Dans mon programme de test, j'ai:
my $object = Perso::text->new(options =>{'ignore_roman' => 'vert'},
replace =>{}, suppress =>[]);
my %temp = $object->{_options};
print $temp{'ignore_roman'}."n";

J'ai comme message d'erreur: "Odd number of elements in anonymous hash
at Perso/text.pm line 14"
_options contient en fait uniquement la clé "ignore_roman", mais pas
sa valeur 'vert'.

Je ne vois pas ce qui cloche dans ce que j'ai fait.

Merci
Julien


voici *ma* version des faits M l'agent

#!perl
use strict;
package Perso;
sub new{
my ($class, %arg) = @_;
return bless {
_file => $arg{file} || '',
_suppress => $arg{suppress},
_options => $arg{options}
}, $class;
}

package main;
use Data::Dumper;

my $object = Perso->new(
file => 'zoubida' ,
options => { 'ignore_roman' => 'vert' },
suppress => [1, 2, 3, 4] );

my %temp = %{$object->{_options}};
print $temp{'ignore_roman'}."n";

print Data::Dumper::Dumper($object);

_END_

la question est : mais que donc pourquoi ce dereferencement ?
(cette reponse est une invitation deguise a jouer a use strict
et Data::Dumper pour comprendre ... :)

my $object = Perso->new(
file => 'zoubida' ,
options => { 'ignore_roman' => 'vert' },
......................^ ceci cree une reference a un hash anonyme
suppress => [1, 2, 3, 4] );
.......................^ ceci cree une reference a un tableau anonyme
si on les dereferences , dans quoi va t'on les conserver

my %temp = %{$object->{_options}};
....................^^ on le fera seulement ici au besoin

bon, se fait tard la.

--
dominix

Avatar
julien
dominix wrote:

voici *ma* version des faits M l'agent
Merci beaucoup, j'ai encore du boulot en Perl!


Julien