Desconsiderem, eh realmente necessario importar "use features 'switch'" :-( quanto ao operador defined-or "//" achei de certa forma interessante acho que pode causar uma certa confusão e devera ser usado com cautela pra manter concistencia.
<br><br>EXEMPLO 1<br><br><span style="font-weight: bold;">my $var = 0;</span>&nbsp; # $var definido<br><br><span style="font-weight: bold;">$var //= 1;</span><br style="font-weight: bold;"><span style="font-weight: bold;">print $var;
</span>&nbsp; # resultado 0<br><br><span style="font-weight: bold;">$var ||= 1;</span><br style="font-weight: bold;"><span style="font-weight: bold;">print $var;&nbsp;</span> # resultado 1<br><br><br><br>EXEMPLO 2<br>
<br><span style="font-weight: bold;">
my $var;</span> &nbsp;&nbsp; # $var nao definido<br>
<br><span style="font-weight: bold;">
$var //= 1;</span><br style="font-weight: bold;"><span style="font-weight: bold;">
print $var;</span>&nbsp; # resultado 1<br>
<br><span style="font-weight: bold;">
$var ||= 1;</span><br style="font-weight: bold;"><span style="font-weight: bold;">print $var;&nbsp;</span> # resultado 1<br>
<br><br style="text-decoration: underline;"><span style="font-weight: bold; text-decoration: underline;">RegExp</span><br><br>Nasce dois HASHES ESPECIAIS (%+ e %-)&nbsp; e dois ARRAYS ESPECIAIS (@+ e @-) utilizados para Expressoes Regulares, entre outras novidades para RegExp.
<br><br style="font-weight: bold;"><span style="font-weight: bold;">$var = &#39;linguagem perl 510&#39;;</span><br style="font-weight: bold;"><br style="font-weight: bold;"><span style="font-weight: bold;">$var =~ /(\d+)/;
</span><br style="font-weight: bold;"><span style="font-weight: bold;">print $1;&nbsp;</span> # resultado 510<br><br><span style="font-weight: bold;">$var =~ /(?&lt;numero&gt;\d+)/;</span><br><span style="font-weight: bold;">print $+{numero};
</span>&nbsp;&nbsp;&nbsp;&nbsp; # resultado 510<br><span style="font-weight: bold;">print @{$-{numero}}</span> # resultado 510<br><br>## Codigo dentro de RegExp<br><span style="font-weight: bold;">$var =~ /(\d+)(?{print $^N})/;&nbsp; <span style="font-weight: bold;">
</span></span><span style="font-weight: bold;"></span># resultdado 510<br><br><br><br><br><span style="font-weight: bold; text-decoration: underline;">Funcao say<br><br><span style="text-decoration: underline;"><span style="font-weight: bold;">
</span></span></span>Nova funcao similar ao print a diferença é que ela ja embute um NEWLINE no final da linha.<br><br>use features &#39;say&#39;;<br><br><span style="font-weight: bold;">print $var.&quot;\n&quot;;</span><br>
# o mesmo que<br style="font-weight: bold;"><span style="font-weight: bold;">say $var;</span><span style="font-weight: bold; text-decoration: underline;"><span style="text-decoration: underline;"><span style="font-weight: bold;">
</span></span><br></span><br><br><div><span class="gmail_quote">Em 19/11/07, <b class="gmail_sendername">Lucas Mateus</b> &lt;<a href="mailto:lucasmateus.oliveira@gmail.com">lucasmateus.oliveira@gmail.com</a>&gt; escreveu:
</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><pre>Agora teremos SWITCH sem importação de classe.<br></pre><br><pre>given ($foo) {<br>
        when (/^abc/) { $abc = 1; }<br>        when (/^def/) { $def = 1; }<br>        when (/^xyz/) { $xyz = 1; }<br>        default { $nothing = 1; }<br><br>    }</pre><div><span class="e" id="q_11658643d38d65e1_1"><br><br>
---------- Forwarded message ----------<br><span class="gmail_quote">From: <b class="gmail_sendername">Lucas Mateus</b> &lt;<a href="mailto:lucasmateus.oliveira@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
lucasmateus.oliveira@gmail.com
</a>&gt;<br>Date: 19/11/2007 11:29<br>Subject: Novidade Perl 5.10<br>To: <a href="mailto:saopaulo-pm@mail.pm.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">saopaulo-pm@mail.pm.org</a><br><br>
</span>Entre as novidades do Perl 5.10 (cujo release candidate 1 chegou ao
<br>CPAN neste sábado -<br><a href="http://search.cpan.org/%7Ergarcia/perl-5.10.0-RC1/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://search.cpan.org/~rgarcia/perl-5.10.0-RC1/</a>), temos um novo<br>operador. É o operador &#39;//&#39; conhecido como operador &#39;default&#39; ou<br>&#39;defined-or&#39;.<br><br>O propósito deste operador é muito similar ao operador &#39;||&#39; (que
<br>corresponde a um OU) com algumas diferenças sutis e úteis.<br><br>O operador &#39;||&#39; é avaliado assim<br><br>exp1 || exp2 = exp1, &nbsp; &nbsp;se o resultado da exp1 é verdadeiro<br>exp1 || exp2 = exp2, &nbsp; &nbsp;caso contrário<br>


<br>Como este operador existe há muito tempo no Perl é muito comum que ele<br>seja usado quando é desejável que uma expressão tenha um certo valor<br>(ou &#39;default&#39;) se ele não for especificado explicitamente.<br>

<br>
Por exemplo,<br><br>sub rule {<br> &nbsp; &nbsp; &nbsp; my $n = $_[0];<br> &nbsp; &nbsp; &nbsp; my $char = $_[1] || &#39;-&#39;;<br> &nbsp; &nbsp; &nbsp; return $char x $n;<br>}<br><br>constrói uma régua de $n caracteres com o caracter especificado ou &#39;-&#39;.<br>


<br>Assim,<br><br>rule(3) &nbsp; &nbsp; &nbsp;retorna &nbsp; &nbsp; &nbsp;&#39;---&#39;<br>rule(4,&#39;+&#39;) &nbsp;retorna &nbsp; &nbsp; &#39;++++&#39;<br><br>No entanto,<br><br>rule(5, 0) &nbsp; &nbsp;retorna &nbsp; &#39;-----&#39;<br><br>porque 0 é *falso* (assim como os outros valores de falso: &#39;&#39; - o
<br>string vazio, 0 - zero inteiro, 0.0 - zero em ponto flutuante, undef).<br><br>Antes, a solução era trocar a expressão simples &quot; $_[1] || &#39;-&#39; &quot; por<br>um mais complicada e precisa:<br><br> &nbsp; &nbsp;my $char = defined $_[1] ? $_[1] || &#39;-&#39;; # atenção ao jogo para
<br>evitar os efeitos colaterais do shift<br><br>Mas a semântica do operador &#39;//&#39; é exatamente esta:<br><br>exp1 || exp2 = exp1, &nbsp; &nbsp;se o resultado da exp1 é definido (não é &#39;undef&#39;)<br>exp1 || exp2 = exp2, &nbsp; &nbsp;caso contrário
<br><br>Então a expressão corrigida fica mais concisa e elegante:<br><br> &nbsp; &nbsp;my $char = $_[1] // &#39;-&#39;;<br><br>Assim, para inúmeras aplicações que antes empregariam o &#39;||&#39; com o<br>temor de que outros valores de falso levassem a surpresas, a melhor
<br>alternativa é agora o uso do &#39;defined-or&#39;.<br>
</span></div></blockquote></div><br>