in reply to Why am I getting "syntax error at Funcy.pl line 18, near "$barney return" ?

$fred;   #also why do I have to put another $fred here? It doesn #'t seem to be part of "if" nor of "else"

To expand on the point that haukex made here, you don't have to put anything there. It doesn't matter what statements you put after the unconditional
    return $sum;
subroutine return statement (as long as they're syntactically correct): they will never be executed.

If you have Perl version 5.12 or greater, you can demonstrate this for yourself using the  ...; (yada) (update: or more correctly "ellipsis"; see Update below) statement (see perlop (update: but see also Update note below)). This statement can be compiled anywhere, but will throw an exception if it is ever executed.

c:\@Work\Perl\monks>perl -wMstrict -le "print qq{perl version: $]}; ;; my ($fred, $barney) = (7, 6); ;; sub combo { my $sum = $fred * $barney; return $sum; if ($fred > $barney) { ...; } else { ...; } } ;; print combo(); " perl version: 5.012003 42
Put a  ...; yada | ellipsis statement anywhere in the path of active code execution in the  combo() subroutine and see what happens.

Update: It seems that Perl documentation was re-organized at some point to move discussion of  ...; to The Ellipsis Statement in perlsyn (the true name of yada is "ellipsis") from perlop (as yada). I don't know when this change was made.


Give a man a fish:  <%-{-{-{-<