a new script PERL : mirroir which displays all characters and begins at the end

This commit is contained in:
Philippe Pittoli 2011-02-24 15:33:21 +01:00
parent 64b1c4b1a0
commit 7991fc83ec
2 changed files with 143 additions and 0 deletions

19
PERL_Language/mirroir.pl Executable file
View File

@ -0,0 +1,19 @@
#!/usr/bin/perl -w
use strict;
use warnings;
use 5.010;
sub mirroir
{
my $chaine = join(' ',@_);
my $mirroir;
my $i = 0;
my $taille = length($chaine);
until($i == $taille)
{
$mirroir .= chop($chaine);
$i++;
}
return $mirroir;
}
say mirroir(@ARGV);

View File

@ -191,3 +191,127 @@ $refv = \$v;
$$refv est équivalent à $v
références sur tableau
t = $reft
@t = @$reft
$t[i] = $$reft[i]
$t[i] = $reft->[i]
Contrer l''aplatissement des listes
my @t1 = ( 16, -33 );
my @t2 = ( "el", 0.3, 4 );
my @t = ( 6, \@t1, \@t2, "s" );
my %h = ("truc" => "machin");
my $refh = \%h;
foreach my $k (keys %$refh)
{
print "$k $refh->{$k}\n";
}
foreach my $p (@$r)
{
if( ref($p) eq "ARRAY" )
{
print "( ";
foreach my $v (@$p)
{ print "$v "; }
print ")\n";
}
elsif( ref($p) eq "HASH" )
{
foreach my $k (keys(%$p))
{ print "$k : $p->{$k}\n"; }
}
elsif( !ref($p) )
{
print "$p\n";
}
}
références
my $r = ["truc","bidule"]; = référence anonyme sur tableau
my $r = {"truc" => "bidule"} = référence anonyme sur hash
pour libérer la mémoire
$r = undef;
Référence sur fichier
open(FILE,">toto") or die("$!");
my $reff = \*FILE;
print $reff "ok\n";
sub affiche
{
my ($ref) = @_;
print $ref "ok\n";
}
affiche( $reff );
affiche( \*FILE ); # équivalent
close( $reff );
Référence sur fonction
sub affcoucou
{
my ($p) = @_;
print "Coucou $p\n";
}
my $ref = \&affcoucou;
&$ref("Larry"); # appel
$ref->("Larry"); # équivalent
sub f
{
my ($f,$p) = @_;
$f->( $p );
}
f( $ref, "Larry" );
f( \&affcoucou, "Larry" ); # équivalent
MODULES
utilisation
use nomdu::module;
écriture d_un module : se finit toujours par .pm comme Truc/Utils.pm
package Utils;
use strict;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(&bonjour $var);
our @EXPORT_OK = qw(&gutenTag &ciao $var2);
Les exports dans %EXPORT_TAGS doivent être dans @EXPORT ou @EXPORT_OK
our %EXPORT_TAGS=(T1=>[qw(&ciao &gutenTag)],
T2=>[qw(&ciao $var2)]);
our $var;
sub bonjour
{
my ($prenom) = @_;
print "Bonjour $prenom\n";
}
1;
utilisation
use strict;
use Truc::Utils;
Truc::Utils::bonjour( "Paul" );
OU
avec export par défaut
use Utils;
bonjour("coucou");
OU
avec export individuel + export par défaut
use Utils qw(:DEFAULT &ciao $var2);
ciao("coucou");
OU
avec export par tag
use Utils qw(:DEFAULT &ciao :T2 );