[ résumé du langage Perl ] | [ functions Perl utiles ] | [ Perl FAQ ] |
use strict ; # oblige les déclarations use warnings ;
use Data::Dumper ; use File::Handle ;
my $i, $s ; $i = 1 ; $s = "bye" ;
my $i = 1 ; my $s = "bye" ;
my ($i,$s) = (1,"bye") ;
$s2 = "Bye $s world" ; # Bye bye world $s2 = 'Bye $s world' ; # Bye $s world
+ - * / % ** ++ --
$x = 3 ; print $x**4 ; # 81 print $x++ ; # 3 print $x ; # 4 print ++$x ; # 5 print $x ; # 5
x . \U \L
$s = "abc" ; $i = 3 ; print $i.$s.$i ; # "3abc3" print "$i$s$i" ; # "3abc3" print "$sxyz" ; # ?? print "${s}xyz" ; # abcxyz print $s x $i ; # "abcabcabc" print "\U$s" ; # "ABC"
== != < > <= >= <=> # pour les nombres eq ne lt gt le ge cmp # pour les chaînes
print 1 <=> 2 ; # -1 print 2 <=> 2 ; # 0 print 1 <=> 2 ; # 1 print "ab" cmp "ac" ; # -1 print "ab" cmp "ab" ; # 0 print "ac" cmp "ab" ; # 1
|| or && and ! not ? :
$min = $x<$y ? x : y ; # min($x,$y)
= += -= *= /= %= **=
1: my @l1 = (1, 2.1, "trois") ; 2: print scalar(@l1) ; # 3 (nombre d'éléments) 3: print $#l1 ; # 2 (indice du dernier élément) 4: 5: for $i (@l1) { print "$i " } # 1 2.1 trois 6: 7: $l1[1] = 4 ; # 1 4 trois 8: 9: pop @l1 ; # trois 10: # @l1 = (1 4) 11: 12: push @l1,('trois',5) ; # 1 4 trois 5 13: 14: shift @l1 ; # 1 15: # @l1 = (4 trois 5) 16: 17: unshift @l1,"six" ; # six 4 trois 5 18: 19: ($a,$b,@l3) = @l1 ; # $a=six, $b=4, 20: # @l3 = (trois 5) 21: 22: @l2 = ( "a",@l1,"b" ) ; # a six 4 trois 5 b
use Data::Dumper ; print Dumper @l1,@l2 ;
($a,$b,$c) = (1,"a",2) ; # $a=1 $b="a" $c=2 ($d,@e) = (1,2,3,4) ; # $d=1 $e=(2 3 4) ($f,@e) = @e ; # équivalent à $f=pop(@e) $l = @e ; # $l=2 (contexte scalaire -> nombre d'éléments) @l = @e ; # @l=(3 4) (contexte de liste)
@l = (0,1) ; # (0 1) $l[4] = 4 ; # (0 1 undef undef 4)
1: my %h = {z=>1, y=>"deux", x=>3.0 } ; 2: 3: $h{1} = 4 ; # y=>"deux" z=>1 x=>3.0 1=>4 4: $h{y} = 2 ; # y=>2 z=>1 x=>3.0 1=>4 5: 6: delete $h{z} ; # y=>2 x=>3.0 1=>4 7: 8: @k = keys %h ; # (y,x,1) 9: 10: @v = values %h ; # (2,3.0,4) 11: 12: for $k (keys %h) { print "($k→$h{$k}) "; } # (y→2) (x→3.0) (1→4)
use Data::Dumper ; print Dumper %h ;
1: my $l1 = [1, 2.1, "trois"] ; 2: for $i (@$l1) { print "$i " } 3: 4: $l1->[1] = 4 ; # 1 4 trois 5: @l2 = ( "a",$l1,"b" ) ; # a \(1 4 trois) b 6: 7: my $h = [z=>1, y=>"deux", x=>3.0] ; 8: 9: $h->{y} = 2 ; # y=>2 z=>1 x=>3.0 10: 11: @k = keys %$h ; # (y,x,x) 12: 13: @v = values %$h ; # (2,1,3.0) 14: 15: for $k (keys %$h) { print "($k→$h->{$k}) "; } # (y→2) (x→3.0) (z→1)
=~ # match ? !~ # ne match pas ?
1: $s = " a = 5 " ; 2: 3: if ($s =~ /^\s*\S+\s*=\s*\S+\s*$/) { … } 4: 5: ($a,$b) = $s=~/^\s*(\S+)\s*=\s*(\S+)\s*$/ ; # $a → "a", $b → "5" 6: 7: $s =~ s/\s//g ; # $s → "a=5"
1: if (…) {…} 2: … if … # print $i if defined($i) 3: 4: unless (…) {…} 5: … unless … # print $i unless $i==0 6: 7: if (…) {…} else {…} 8: if (…) {…} elsif (…) else {…}
1: while (…) {…} 2: … while … # print $i while $i<100 ; 3: do {…} while … 4: 5: for (… ; … ; …) {…} 6: for $var (@liste) {…} 7: 8: while (…) 9: { 10: … 11: next if … 12: … 13: last if … 14: }
1: sub f 2: { 3: ($a,$b) = @_ ; 4: … 5: } 6: f(1.2,"tagada") ;
1: sub f 2: { 3: my (@p1,@p2) = @_ ; 4: 5: # @p1 → (1,2,3,4,5) 6: # @p2 → () 7: } 8: 9: @l1 = (1,2,3) ; @l2 = (4,5) ; 10: f(@l1,@l2) ;
1: sub f 2: { 3: my ($p1,$p2) = @_ ; 4: 5: # $p1 → [1,2,3] 6: # $p2 → [4,5] 7: } 8: 9: @l1 = (1,2,3) ; @l2 = (4,5) ; 10: f(\@l1,\@l2) ;
1: sub f 2: { 3: … 4: return -1 ; 5: … 6: } 7: 8: $i = f() ; # $i → -1
1: sub f 2: { 3: … 4: -1 ; # dernière instruction évaluée 5: } 6: 7: $i = f() ; # $i → -1
1: while (<>) # lit sur stdin 2: { 3: print ; # équivalent à: print $_ ; 4: }
1: use FileHandle ; 2: my $fh = new FileHandle("/etc/passwd") or die $! ; 3: while (<$fh>) 4: { 5: chomp ; # supprime le \n final 6: s/#.*$// ; # supprime les commentaires 7: next unless /\S/ ; # ignore ligne vide 8: … 9: } 10: $fh->close() ;
$l = <$fh> ; # lit une ligne (contexte scalaire) $@ = <$fh> ; # lit toutes les lignes restantes (contexte de liste)
1: use File::Handle ; 2: my $fh = new File::Handle(">/tmp/toto") or die $! ; 3: for $l (@l) 4: { 5: $fh->printf("%d: %s\n",$i++,$l) ; 6: } 7: $fh->close() ;
$s = << "EOS" ; bla bla bla blabla bla bla blabla blabla bla EOS
system("ls -l /") ;
print << `EOSHELL` cd /var/log tail messages EOSHELL
for (`ls -l /`) { print ; # chaque ligne émise par la commande ls }
$fh = new FileHandle("ls -l /|") ; # récupère la sortie de la commande ls while (<$fh>) { print ; }
$fh = new FileHandle("|sort") ; # envoie dans le filtre Unix sort for $line (@l) { $fh->print $line ; }
1: # fichier Url.pm 2: 3: package Url ; 4: 5: require Exporter ; 6: our @ISA = qw(Exporter); 7: our @EXPORT=qw() ; 8: 9: sub new # constructeur 10: { 11: my($type,$s…) = @_ ; 12: my($this) ; # le futur objet 13: 14: $this->{url} = $s ; # initialisation 15: $this->{…} = … ; 16: 17: bless $this,$type ; 18: return $this ; 19: } 20: 21: sub get 22: { 23: my ($this) = @_ ; 24: 25: return wget($this->{url}) ; 26: }
1: use Url ; 2: 3: my $u = new Url("http://www.insmi.fr",…); 4: $u->get() ;
$Id: memoperlcore.txt 551 2012-05-20 07:17:51Z jaclin $