La función
localtime devuelve cosas distintas según esté en contexto lista o en contexto escalar.
Como podrás leer en la documentación, en modo escalar devuelve la fecha en modo 'texto':
Using perl Syntax Highlighting
$ahora = localtime;
print $ahora; # Mon Apr 24 18:24:37 2006
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
En modo lista devuelve todos los componentes de la fecha, en forma de
array, desde los segundos hasta si estamos en la hora ganada al retrasar los relojes para ahorrar energía:
Using perl Syntax Highlighting
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
$mon++;
$year += 1_900;
print "$mday/$mon/$year $hour:$min:$sec"; # 24/4/2006 18:27:24
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Es justamente los paréntesis lo que definen que la función trabaje de una manera o de otra.
Cuando pones
($b)=localtime();, estás ejecutando la función en modo lista. Y como sólo hay una variable en el lado izquierdo (
$b), guarda allí el primer valor de la lista. En este caso, los segundos:
Using bash Syntax Highlighting
explorer@next3:~> perl -le '($b) = localtime; print $b'
48
explorer@next3:~> perl -le '($b) = localtime; print $b'
49
explorer@next3:~> perl -le '($b) = localtime; print $b'
51
explorer@next3:~> perl -le '($b) = localtime; print $b'
52
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
Por eso sale un número distinto cada vez... son los segundos de este minuto de tu vida.
Aquí tienes
más información sobre las listas.