in reply to Re^3: create clone script for utf8 encoding
in thread create clone script for utf8 encoding

> The problem is that if more code is added you'll have a statement that is neither terminated by a brace nor a semicolon

In fact, in my own code, I never put a semicolon after return: Adding code after

return $winner;
makes no sense, as that code wouldn't be reachable. So I'm glad I'll get some kind of a syntax error.

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Replies are listed 'Best First'.
Re^5: create clone script for utf8 encoding
by kcott (Archbishop) on Dec 21, 2018 at 03:12 UTC

    I agree, code after a return is unreachable.

    The last sentence of that first paragraph ("The problem is ...") should really have been on a new paragraph; and it should have indicated a general case, rather than the specific case with return. I recall that being my thought process at the time, but clearly it didn't make it to my fingers whilst typing.

    Having said that, I would still recommend adding the semicolon. It clearly indicates where the statement was intended to end. Had an interruption occurred whilst coding, perhaps return was meant to be one of:

    return; return $var;

    Or return $var was meant to be one of:

    return $var; return $var if $condition;

    It's even possible there were meant to be more lines after return $var:

    return $var ? 'TRUE' : 'FALSE';

    — Ken

Re^5: create clone script for utf8 encoding
by Aldebaran (Curate) on Jan 03, 2019 at 08:11 UTC
    In fact, in my own code, I never put a semicolon after return

    Interesting, and thanks all for comments. I do try to work through the source posted, and this might be my final version of highest_number for this thread. I finally worked out what the glitch was in getting the next number after 9. Abridged output, then source:

    $ ./2.cw1.pl ... object created, back with caller word is 2.cw dir2 is perlmonks 2.cw1.html 2.cw2.html ... 2.cw9.html 2.cw10.html 2.cw11.html ... matching is 2.cw9.html matching is 2.cw10.html matching is 2.cw11.html old num is 11 Make rus captions(y/n)?: n ... Put file to server(y/n)?: y server dir is perlmonks ... return is 2.cw12.html
    sub highest_number { use 5.011; my ( $aref, $filetype, $word ) = @_; my $number; my @matching; my $ext = "." . $filetype; push( @matching, 0 ); #min returned value for my $file ( @{$aref} ) { #print "file is $file\n"; if ( $file =~ /^$word(\d+)$ext$/ ) { print "matching is $file\n"; push( @matching, $1 ); } } @matching = sort { $a <=> $b } @matching; my $winner = pop @matching; return $winner }

    I hadn't been sorting numerically. The existence of this page shows that the code works: resulting page.

    What's funny is that I presented with an algorithm I was embarrassed to show, but with the mere addition of { $a <=> $b } and falling back to not having a semi-colon after the return, then I think this is pretty good, lexical perl.