27
~~ in perl id:astj

Perlのsmart match演算子

  • Upload
    astj

  • View
    205

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Perlのsmart match演算子

~~ in perlid:astj

Page 2: Perlのsmart match演算子

Ø|

m−oó$aw

=ê@b”Ì•

m−v−ߤo�x

Page 3: Perlのsmart match演算子

�ž

$a = 3; @b = (1,2,3,4);foreach $elem (@a) { return 'Hit!' if $elem == $a;}

«ł›�¾Í–ƒq

grep { $a == $_ } @b;

Page 4: Perlのsmart match演算子

perl 5.10 ı�“�

Page 5: Perlのsmart match演算子

~~/æÄ

Page 6: Perlのsmart match演算子

$a ~~ @b@b”Ì•$awm−�xÕþßç•þáÞ|—¡

use 5.010;$a = 3; @b = (1,2,3,4);print "Hit!\n" if $a ~~ @b;

Page 7: Perlのsmart match演算子

Õþßç�¡„

Page 8: Perlのsmart match演算子

$a ~~ %cîáÓ™”ô»Éß³¢—¡

use 5.010;$a = "Steve"; %c = ( "Steve" => "Jobs", "Bill" => "Gates" );print "Hit!\n" if $a ~~ %c;

Page 9: Perlのsmart match演算子

oo�¡„

Page 10: Perlのsmart match演算子

m›��ô¹��Õ�Øq÷ö�¡

(Ø|v|¤œ5.14m¤ßvœvØ)

$a = 3; $b = (1,2,3,4);print "Hit!\n" if $a ~~ $b;

«¶Æ•5.14vœpush�vpop�vkeys�vØ

�ô¹��Õ��−œ|o�¡„

Page 11: Perlのsmart match演算子

$a ~~ $d$a == $dºœ$a eq $dºœ

ø|¶•°©—¡

Page 12: Perlのsmart match演算子

¶µvó^�¡„

Page 13: Perlのsmart match演算子

@a ~~ @b$a = [1,2,3];$b = [1,2,3];print "Smart match!\n" if $a ~~ $b; # match!

ž�O

$p = [ 1, 2, 3 ];$q = [ 1, 2, 3, 4 ];print "Smart match!\n" if $p ~~ $q; # matchしない!

$r = [ 1, 2, 3 ];$s = [ 1, 2, [ 3, 4, 5 ] ];print "Smart match!\n" if $r ~~ $s; # matchするんだなぁ

µµ

Page 14: Perlのsmart match演算子

perl 5.16”perldoc¢−�

Right operand is an ARRAY:

Left Right Description and pseudocode =============================================================== ARRAY1 ARRAY2 recurse on paired elements of ARRAY1 and ARRAY2[2] like: (ARRAY1[0] ~~ ARRAY2[0]) && (ARRAY1[1] ~~ ARRAY2[1]) && ... HASH ARRAY any ARRAY elements exist as HASH keys like: grep { exists HASH->{$_} } ARRAY Regexp ARRAY any ARRAY elements pattern match Regexp like: grep { /Regexp/ } ARRAY undef ARRAY undef in ARRAY like: grep { !defined } ARRAY Any ARRAY smartmatch each ARRAY element[3] like: grep { Any ~~ $_ } ARRAY

Page 15: Perlのsmart match演算子

=êœÀ”~~“�oóÀ•~~|–−”�

$a = [ 1, 2, 3 ];$b = [ 1, 2, [ 3, 4, 5 ] ];

•u¦−($a ~~ $b)�»fi—ß

( 1 ~~ 1 ) && ( 2 ~~ 2 ) && ( 3 ~ [3,4,5] ) # TRUE && TRUE && TRUE

Page 16: Perlのsmart match演算子

ž�O∼Œ¶z¶›–x¤

Page 17: Perlのsmart match演算子

îáÓ™»

Left Right Description and pseudocode =============================================================== HASH1 HASH2 all same keys in both HASHes like: keys HASH1 == grep { exists HASH2->{$_} } keys HASH1 ARRAY HASH any ARRAY elements exist as HASH keys like: grep { exists HASH->{$_} } ARRAY Regexp HASH any HASH keys pattern match Regexp like: grep { /Regexp/ } keys HASH undef HASH always false (undef can''t be a key) like: 0 == 1 Any HASH HASH key existence like: exists HASH->{Any}

Page 18: Perlのsmart match演算子

Key\sm›–©�Value»∙q�Øooœ|o

$a = { "Steve" => "Jobs", "Bill" => "Gates" };$b = { "Steve" => "Ballmer", "Bill" => "Gates" };print "Smart match!\n" if $a ~~ $b; # matchする!!

Page 19: Perlのsmart match演算子

∙µ∙µ�|z¶›–x¤

Page 20: Perlのsmart match演算子

H•Øo¬o¬�|z–ºº|z–

Page 21: Perlのsmart match演算子

—ÞO•Øº�}œ|o”� ( id:moznion œ )

oÚ¹ô½ßèïáË: ©”�Èo�|¤

Page 22: Perlのsmart match演算子

The smartmatch family of featuresare now experimental

Page 23: Perlのsmart match演算子

5.18��g\©¤"�‹O"¶)Ô•yß7—©

³°¶ozwooø„ •¶›–|—o—|¤

Page 24: Perlのsmart match演算子

ï�

Page 25: Perlのsmart match演算子

g

C›”$a ~~ @b»ƒ©¶ß•oo�∼“�Êq”�

ofiv¡›xß|–a›–z−��∼–

:ŸØgrep|–Ûe|—|łq

Page 26: Perlのsmart match演算子

u|—o

Page 27: Perlのsmart match演算子