OVH Cloud OVH Cloud

Perl et Structure

23 réponses
Avatar
gla
Bonjour,

En "C" on peut facilement définir des structures.

ex:
struct point3D
{
int x, y, z;
};


Et ensuite créer un tableau de cet élément là

ex:

struct point3D mespoints[64];


Comment on fait en Perl pour avoir un tableau de structure ?

10 réponses

1 2 3
Avatar
Nicolas George
"gla" wrote in message <43941d2f$0$19720$:
Comment on fait en Perl pour avoir un tableau de structure ?


perldoc Class::Struct
perldoc fields

Avatar
Jacques Caron
Salut,

On Mon, 05 Dec 2005 11:57:55 +0100, gla wrote:

Comment on fait en Perl pour avoir un tableau de structure ?


En perl il n'y a pas de structures à proprement parler (en tous cas pas
nativement), mais on utilise habituellement des hashes pour faire la même
chose. La grosse différence, c'est qu'il n'y a pas de définition préalable
de ce que contient la structure, chaque instance peut être différente.
Evidemment avec des objets on peut forcer un peu tout ça, mais suivant ce
qu'on cherche à faire ça peut ne pas être utile.

Si on utilise un hash à la place d'une structure, il suffit de faire un
tableau de hashes (en fait un tableau de references de hashes). Là encore,
un tableau perl n'a pas forcément une taille prédéfinie, contrairement à
ce qui se passe en C.

Voir man perlreftut et man perldsc pour plus de détails...

Jacques.
--
Oxado http://www.oxado.com/

Avatar
DoMinix
gla wrote:
Bonjour,

salut



Comment on fait en Perl pour avoir un tableau de structure ?



on lit perldoc perldsc
ca explique tout.

--
dominix

Avatar
gla
Pas tout visiblement.

Pusique j'ai 3 réponses et 3 réponses différentes pour la meme question.

Passer par des classes, oui, mais je ne voulais pas travailler en objet.

Utiliser les hash code ? je ne vois pas trop le rapport en fait. Si j'ai
besoin d'une sctructure c'est pour des principes de lisibilité. Donc là, je
crois qu'on s'éloigne.


on lit perldoc perldsc
ca explique tout.


Avatar
Nicolas George
"gla" wrote in message <4395bf19$0$20150$:
Passer par des classes, oui, mais je ne voulais pas travailler en objet.


Il ne s'agit pas de « travailler en objet ». La méthode recommandée pour
définir des structures en perl moderne, c'est use fields. Pour perl un peu
plus vieux, Class::Struct fait à peu près l'équivalent, en un peu moins
efficace.

Avatar
gla
justement, j'ai fais ca :

struct (point => [
x => '$',
y => '$',
z => '$',
]);

my @pts = new point;


j'ai espéré pouvoir ensuite affecter mon tableau de structure comme ceci

$pts[$index]->x($value);

mais ca ne marche pas. Du coup quel est l'alternative ?
Avatar
kurtz le pirate
In article <dn1ccb$2a16$,
Nicolas George <nicolas$ wrote:

::"gla" wrote in message <43941d2f$0$19720$:
::> Comment on fait en Perl pour avoir un tableau de structure ?
::
::perldoc Class::Struct
::perldoc fields

tiens, chez moi, Class:Struct me retourne "No documentation found for
"Class:Struct"...

klp
Avatar
Nicolas George
kurtz le pirate wrote in message
:
tiens, chez moi, Class:Struct me retourne "No documentation found for
"Class:Struct"...


Avec deux :, comme dans tous les modules perl, ça devrait mieux marcher.

Avatar
Nicolas George
"gla" wrote in message <4395cfe8$0$21305$:
struct (point => [


Tu as une version de perl trop vieille pour fields ?

my @pts = new point;


Les points sont des scalaires, pas des tableaux.

Avatar
extense
si ca, ca ne marche pas :
$pts[10]->x(4);

Comment on fait pour avoir un tableau ou chaque élément est une structure ?

L'objet est d'avoir un tableau de point 3D...



"Nicolas George" <nicolas$ a écrit dans le message de
news: dn4mfi$ofi$
"gla" wrote in message <4395cfe8$0$21305$:
struct (point => [


Tu as une version de perl trop vieille pour fields ?

my @pts = new point;


Les points sont des scalaires, pas des tableaux.



1 2 3