diffences entre ces 2 tableaux

diffences entre ces 2 tableaux - Perl - Programmation

Marsh Posté le 29-03-2007 à 15:41:47    

Bonjour,
 
Quelle est la différence (s'il y en a une) entre ces 2 tableaux:
 

Code :
  1. @tableau["chaine1", "chaine2"];


 
et
 

Code :
  1. @tableau("chaine1", "chaine2" );


 
Merci

Reply

Marsh Posté le 29-03-2007 à 15:41:47   

Reply

Marsh Posté le 29-03-2007 à 16:30:54    

j'imagine qu'il manque les égales à tes deux ecritures...  
 
La première crée un tableau d'un seul élément, cet élément étant une référence sur un tableau anonyme de deux éléments "chaine1" et "chaine2"
La deuxime crée un tableau de deux éléments "chaine1" et "chaine2".
 
Donc oui y'a une grosse différence [:dawak]

Reply

Marsh Posté le 29-03-2007 à 16:40:28    

Merci
Effectivement j'ai oublié les = :)
Dans le premier cas finalement on a un amour de pointeur

Reply

Marsh Posté le 29-03-2007 à 16:48:43    

Une référence  [:alloy]
 
Je cite "Advanced Perl Programming":

Citation :

Perl [...] allows you to create anonymous data structures, and supports a fundamental data type called a "reference," loosely equivalent to a C pointer. Just as C pointers can point to data as well as procedures, Perl's references can refer to conventional data types (scalars, arrays, and hashes) and other entities such as subroutines, typeglobs, and filehandles. Unlike C, they don't let you peek and poke at raw memory locations.

Reply

Marsh Posté le 29-03-2007 à 16:58:41    

Anonyme me fait un peur :/
Dans le cas de mon tableau:
@tableau=["chaine1", "chaine2"];
Est il possible d'ajouter des éléments à mon tableau référencé.
Merci

Reply

Marsh Posté le 29-03-2007 à 17:08:00    

tu es bien d'accord que la tableau référencé donc tu parles il est dans $tableau[0] ???
Donc en fait pour accèder à chaine2 tu dois faire $$tableau[0][1] ( ou $tableau[0]->[1]) ... Je comprends vraiment pas l'intérêt!!!
Par contre tu peux tout à fait pusher dans ce tableau anonyme à condition de déréférencer ton tableau lors de l'appel:

Code :
  1. push @$tableau[0], "chaine 3";


et ne surtout pas faire

Code :
  1. push @tableau, "chaine3";


Sinon tu va te retrouver avec "tableau" qui contiendra deux elements:
- le premier étant une référence sur un tableau anonyme ( contenant chaine1 et chaine2)
- le deuxieme la chaine "chaine3"

 

Généralement quand on veut se servir d'une référence sur un tableau on fait:

Code :
  1. $ref = ["chaine1", "chaine2"];


ce qui n'evite pas le déréférencement lorsque c'est nécessaire mais evite la problématique juste au dessus.

 

Enfin tout ça c'est les bases du perl un petit tour dans la doc/un bouquin ne ferait pas de mal à mon avis :)


Message édité par anapajari le 29-03-2007 à 17:08:40
Reply

Marsh Posté le 29-03-2007 à 17:53:18    

Ok merci en fait mon problème est spécial et long à expliquer mais avec ca:
 push @$tableau[0], "chaine 3";
 
Je vais m'en sortir
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed