El problema son los my(): estás declarando variables $link dentro del contexto de cada if() (el contexto lo marcan las llaves.
Lo correcto:
Using perl Syntax Highlighting
my $op = 'dos';
my $link;
if ($op eq 'uno') {
$link = 'http://localhost/bad/aca/a';
}
if ($op eq 'dos') {
$link = 'http://localhost/bad/aca/b';
}
if ($op eq 'tres') {
$link = 'http://localhost/bad/aca/c';
}
if ($op eq 'cuatro') {
$link = 'http://localhost/bad/aca/d';
}
if ($op eq 'cinco') {
$link = 'http://localhost/bad/aca/e';
}
print $link;
<stdin>;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
aunque... quedaría mejor con el operador ternario en cascada:
Using perl Syntax Highlighting
my $op = 'dos';
my $link = ($op eq 'uno') ? 'http://localhost/bad/aca/a'
: ($op eq 'dos') ? 'http://localhost/bad/aca/b'
: ($op eq 'tres') ? 'http://localhost/bad/aca/c'
: ($op eq 'cuatro') ? 'http://localhost/bad/aca/d'
: ($op eq 'cinco') ? 'http://localhost/bad/aca/e'
: ''
;
print $link;
<stdin>;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Incluso se puede abreviar algo más...
Using perl Syntax Highlighting
my $op = 'dos';
my $link = 'http://localhost/bad/aca/';
$link .= ($op eq 'uno') ? 'a'
: ($op eq 'dos') ? 'b'
: ($op eq 'tres') ? 'c'
: ($op eq 'cuatro') ? 'd'
: ($op eq 'cinco') ? 'e'
: ''
;
print $link;
<stdin>;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
O también, usando hash:
Using perl Syntax Highlighting
my $op = 'dos';
my %links = (
uno => 'a',
dos => 'b',
tres => 'c',
cuatro => 'd',
cinco => 'e',
);
my $link = "http://localhost/bad/aca/$links{$op}";
print $link;
<stdin>;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4