And, since you only use $self once, the variable (and the return statement)
are dispensable

sub GetFileName   {
  shift->{cf}
}

On 4 May 2012 12:57, Shlomi Fish <[email protected]> wrote:

> Hi all,
>
> in reflection about Gabor’s talk yesterday, I’ve been spending some time
> refactoring the code of the Config::IniFiles CPAN module, of which I am a
> co-maintainer, and which I adopted because I’ve made use of it for one
> project.
>
> While doing that I’ve ran into this gem:
>
> sub GetFileName
> {
>    my $self = shift;
>    my $filename;
>    if (exists $self->{cf}) {
>        $filename = $self->{cf};
>    } else {
>        undef $filename;
>    }
>    return $filename;
> }
>
> It's indicative of a lot of ignorance of how Perl 5 works.
>
> This ended up being shortened into:
>
> sub GetFileName
> {
>    my $self = shift;
>
>    return $self->{cf};
> }
>
> Who said Golf is incompatible with refactoring? ;-)
>
> (of course if we take golfing this method to extreme it would be
> something like "sub GetFileName{$_[0]{cf}}").
>
> Anyway, later I've ran into this loop:
>
>                # process continuation lines, if any
>                while($self->{allowcontinue} && $val =~ s/\\$//) {
>                    $line = $self->_read_next_line($fh);
>                    $val .= $line;
>                }
>
> Now, $self->{allowcontinue} is not modified within _read_next_line() (or
> anywhere else except for initialisation) so in case it is true, it is
> evaluated every time the condition is processed (not to mention, it gave
> me a
> "WTF?" moment).
>
> I wonder which surprises await for me next in the code.
>
> Regards,
>
>        Shlomi Fish
>
> --
> -----------------------------------------------------------------
> Shlomi Fish       http://www.shlomifish.org/
> Original Riddles - http://www.shlomifish.org/puzzles/
>
> God gave us two eyes and ten fingers so we will type five times as much as
> we
> read.
>
> Please reply to list if it's a mailing list post - http://shlom.in/reply .
> _______________________________________________
> Perl mailing list
> [email protected]
> http://mail.perl.org.il/mailman/listinfo/perl
_______________________________________________
Perl mailing list
[email protected]
http://mail.perl.org.il/mailman/listinfo/perl

Reply via email to