Tú mismo has descrito la solución
Using perl Syntax Highlighting
$d->{ciudad} = (split /-/, $d->{ciudad})[-1];
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Los paréntesis "agrupan" los elementos devueltos por split(), y como entonces es una lista de elementos, podemos acceder a ellos como si fuera un
array normal, así que le pedimos que nos dé el último elemento (-1).
Esta notación es típica de otros lenguajes, como Ruby o Python, pero también la tenemos en Perl.
Más información en tu propio ordenador en
perldoc perldata,
y en la Web (
traducido al español), en la sección "Constructores de listas":
Using text Syntax Highlighting
Una lista de valores también se puede indexar como un array normal. Debe escribir la lista entre paréntesis para evitar ambigüedades. Por ejemplo:
# stat devuelve una lista.
$time = (stat($archivo))[8];
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4