grep et sedgrep expreg fichier ->
imprime les lignes du fichier qui
contiennent expregsed expreg edition fichier
-> effectue la commande edition
sur les lignes du fichier
qui contiennent expregRegExp.) String, Pattern
et Matcher) split
ou grep (1er arg. ) :split(/b/, 'aaabccbacbc')
->
('aaa', 'cc', 'ac', 'c') grep(/a/, ('aaa', 'cc', 'ac',
'c'))
-> ('aaa','ac')
(renvoie la sous-liste formée de toutes les
chaînes
contenant une sous-chaîne filtrée par l'e.r. passée en 1er arg.)m
comme match) par rapport à une chaîne, engendrant
une valeur booléenne :"abc" =~ m/b/
->
true mais "abc" =~ m/d/
-> falses
comme substitute) par rapport à une variable (ou
plus généralement par rapport à une L-value),my $x = "abc"; $x =~ s/b/pp/;
==> la variable $x vaut "appc".
Essai
minimal à faire fonctionner et à modifier.../' qui encadre l'e.r. dans le
filtre m/e.r./ s/e.r./subst/.
/' est utilisable dans tous les cas, m ou de
substitution s, on peut choisir un séparateur
quelconque./' est accepté dans ce cas.foreach my $s ( split( %/%, ' un jour / mon prince /
viendra' )){
print "$s\n";
}my $ch = ' un jour / mon prince / viendra';
$ch =~ s%/%€%;un jour € mon prince / viendra.split( /\//, ' un jour / mon prince /
viendra' )split( '/', ' un jour / mon prince / viendra' )/'./',
elle n'est pas cette chaîne entre '/'...my $er = /a/;",
par exemple, mais bien "my $er = 'a'; grep(/$er/....) ".Luc
12 |
<-----------> | my %tab;$tab{'Maurice'}
= 18$tab{'Juliette'}
= 07 |
open(ENTREE, "<$fich");
my %tab;
my @tablignes = <ENTREE>;
foreach my $ligne ( @tablignes ){
chomp($ligne); # supprime le "\n" final
my ($le_nom, $la_note) = split( /[ \t]+/, $ligne);
$tab{$le_nom} = $la_note;
}
return %tab;
TxtVersTab.pl,
avec
un fichier-exemple pour essais NomsNotes.txt.jfp% perl TxtVersTab.pl NomsNotes.txt
Elsa09Franck12Maurice18Kevin09Elisabeth07Joseph09Josette19Max07Aline12Antoinette12Julien13Alexandre09Ernestine18Mauricette12Jules11Francine13Pierre08Hélène13Jean-Pierre09Juliette07Christine12Paulette09Jacques09Luc12print %tab", elle
donne les noms-notes dans un ordre arbitraire, rassemblés en une seule
chaîne.TxtVersTabP.pl.
[1-9][0-9]*|0([0-7]+|x[0-9A-F]+)sub extrnb1($){ #arg. nom de fichier
my ($fich) = @_;
open(ENTREE, "<$fich");
my $er = '[1-9][0-9]*|0([0-7]+|x[0-9A-F]+)';
my @tablignes = <ENTREE>;
my @tabnb = grep(/$er/, @tablignes);
foreach my $lgn ( @tabnb ){
print $lgn; #le saut de ligne est resté en
place !
}
}#extrnb
extrnb1.pl,
donnée
pour essais nb.txt.
ø ou 𠊚my $er = '&#([1-9][0-9]*|x[0-9A-F]+);';
/[*]([^/*]|[/]|[*]+[^/*])*[*]+/ sub supprCommC($){ #arg. nom de fichier
my ($fich) = @_;
open(ENTREE, "<$fich");
my $erc = '/[*]([^/*]|[/]|[*]+[^/*])*[*]+/';
#sans '\'
my @tablignes =
<ENTREE>;
my $txt = join('',
@tablignes); # regroupe toutes les lignes en une seule chaîne
$txt =~ s=$erc=
=; # avec '=' comme séparateur pour ne pas avoir à marquer
les '/' par '\'
print $txt;
}#supprCommC supprCommC.pl, donnée
pour essais exCom.txt. g (comme global) à la fin de la substitution : $txt =~ s=$erc=
=g;//[^\n]*\nsub supprToutComm($){ #arg. nom de fichier
my ($fich) = @_;
open(ENTREE, "<$fich");
my $erc =
'/[*]([^/*]|[/]|[*]+[^/*])*[*]+/'; # la même
my $erfl = '//[^\n]*\n';
# idem
my $er = "$erc|$erfl";
# disjonction ou réunion...
my @tablignes =
<ENTREE>;
my $txt = join('',
@tablignes);
$txt =~ s=$er= =; # avec
'=' comme séparateur
print $txt;
}#supprToutComm supprCommCFL.pl,
donnée
supplémentaire pour essais exCom2.txt.