a new script PERL : mirroir which displays all characters and begins at the end
This commit is contained in:
parent
64b1c4b1a0
commit
7991fc83ec
19
PERL_Language/mirroir.pl
Executable file
19
PERL_Language/mirroir.pl
Executable 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);
|
@ -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 );
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user