perl 5.10 smart match

Par mc, 29 mars 2009 14 h 30 min

depuis perl 5.10, on peut utiliser l’opérateur smart match (venu de la planète perl6) pour comparer une valeur en lhs contextuellement à la nature de la rhs. De nombreuses erreurs de débutants disparaissent au passage:

plus d’hésitation entre ‘=~’ et ‘~=’ :

$line =~ /^To/
 
# peut s'écrire
$line ~~ /^To/

plus d’erreur bête entre ‘==’ et ‘eq’

$line ~~ 12;
$line ~~ 'foo';

l’utilisation la plus courante d’any (simple comparaison des valeurs) est prise
en charge:

use List::MoreUtils qw(any);
 
my $foo = 'joe'; 
my @bar = qw( joe bar );
 
if ( any { $_ eq $foo } @bar ) {
	print "$foo est présent dans le tableau\n";
}

peut maintenant s’écrire:

my $foo = 'joe'; 
my @bar = qw( joe bar );
 
$foo ~~ \@bar and say "$foo est présent dans le tableau";

Related posts:

  1. perl tip of the day: tableaux et initalisation rapide
  2. notes on arrays ( the VB with in perl and the use of map)
  3. perl onliners, vim and iso2709
  4. hate perl5 if you want … but please use good reasons !
  5. de vignere en zsh

Laisser un commentaire

Panorama Theme by Themocracy