1 de marzo de 2018

sustituyendo el operador smartmatch en Perl5

Hola,
tras el anuncio reciente de que la versión 5.28 de Perl5 eliminaría el operador smartmatch ~~ (ver aquí) me he encontrado un programa viejito dónde se usaba, a pesar de que ha sido experimental desde hace mucho tiempo. Con ayuda de

$ perldoc perlop

cuelgo aquí un ejemplo de cómo sustituir este operador por código estándar:

use strict;
use warnings;

my @array = qw( JASPAR footprintDB UNIPROBE );
my %hash  = ( JASPAR => 1, footprintDB => 2, UNIPROBE => 3 );

my $element = 'footprintDB';

# array context
if ($element ~~ @array){
  print "\@array contains element '$element' (smartmatch)\n";
}

if (grep { $element eq $_ } @array){
  print "\@array contains element '$element' (core Perl5)\n";
}

# hash context
if(/$element/ ~~ %hash){
  print "\%hash contains a key matching regex /$element/ (smartmatch)\n";
}

if(grep { /$element/ } keys(%hash)){
  print "\%hash contains a key matching regex /$element/ (core Perl5)\n";
}

Un saludo,
Bruno

No hay comentarios:

Publicar un comentario