OVH Cloud OVH Cloud

passage de paramètres par référence

4 réponses
Avatar
Eric
Bonjour

Je passe un tableau en paramètre à une fonction et je souhaiterai que
les modifications apportés dans ce tableau soient prises en compte non pas
en local mais sur le tableau passé en paramètres et ce sans avoir besoin de
le retourner.
Est-ce que quelqu'un connait la réponse?

A#

4 réponses

Avatar
Denis -esp2008-
Bonjour,

`perldoc perlref` ou en français
http://perl.enstimac.fr/DocFr/perlref.html

Bonne chance,

--
Denis
Avatar
Eric
"Eric" <EricD> a écrit dans le message de news:
4279aa12$0$284$
Bonjour

Je passe un tableau en paramètre à une fonction et je souhaiterai que
les modifications apportés dans ce tableau soient prises en compte non pas
en local mais sur le tableau passé en paramètres et ce sans avoir besoin
de le retourner.
Est-ce que quelqu'un connait la réponse?

A#



Voila ce que j'ai trouvé cela fonctionnebien, mais j'ai quand même un doute
.... normal c'est la première fois.
Si vous pouvez me dire ce que vous en pensez Merci.

APPLI correspond à un fichier ouvert en écriture.
@APPLI correspond à un tableau .

&tri( @APPLI );
&ecrit( *APPLI,@APPLI );

###################################################
################## fonctions ######################
###################################################
# tri les tableaux et compte le nombre
# d'occurence
###################################################
# entrée : nom du tableau a trié
# sortie : tableau mis à jour
###################################################

sub tri{

my $TempLocal = "";
my ( $TABLEAU )=@_;
my @TEMP;

@TEMP=sort{$a cmp $b} @$TABLEAU;

foreach (@TEMP)
{
if ($_ =~ $TempLocal )
{
$i++;
}
else
{
$i=1 if $i == 0;
push @$TABLEAU,"Occurence de $TempLocal = $i n";
$i=0;
}
$TempLocal = substr $_,0,15;
}
}

###################################################
################## fonctions ######################
###################################################
# ecrit le tableaux dans un fichier
#
###################################################
# entrée : nom du fichier
# : nom du tableau a trié
# sortie : fichier renseigné
###################################################

sub ecrit{

my $NOM = shift;

print $NOM $_ foreach ( @_ );

}

Avatar
Jacques Caron
Salut,

On Fri, 6 May 2005 10:51:45 +0200, Eric <EricD> wrote:

sub tri{

my $TempLocal = "";
my ( $TABLEAU )=@_;
my @TEMP;

@TEMP=sort{$a cmp $b} @$TABLEAU;

foreach (@TEMP)
{
if ($_ =~ $TempLocal )
{
$i++;
}
else
{
$i=1 if $i == 0;
push @$TABLEAU,"Occurence de $TempLocal = $i n";
$i=0;
}
$TempLocal = substr $_,0,15;
}
}


Je pense que tu as du te rendre compte d'un souci: tu ne fais qu'ajouter
les lignes "Occurence de..." à ton tableau initial. Si tu veux n'avoir que
ces lignes-là, il faudrait que tu effaces le tableau d'abord: @$TABLEAU =
(); Ensuite je pense que ton compte n'est pas exact, ça doit mieux marcher
avec un $i=1; et en supprimant la ligne $i=1 if..., non?

Pour finir, il y a une méthode plus courte (mais pas forcément plus
lisible):
%count = ();
map {$cnt{substr($_,0,15)}++} @tableau;
@t = map {"Occurence de $_ = $count{$_} n"} keys %cnt;

Pas testé, mais ça doit pas être bien loin.

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/

Avatar
lionel.romain
Bonjour,

passe ton tableau par référence :

sub fct
{
my ( $r ) = @_ ;
$r->[0] = 'nous' ;
}


# main

my @t = ( 'toi','moi','lui') ;
&fct ( @t ) ;