Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: What operator prepends?

by Tanktalus (Canon)
on Jan 25, 2006 at 17:57 UTC ( #525503=note: print w/ replies, xml ) Need Help??


in reply to What operator prepends?

Usually, when I want to prepend, I just change the order of operations into an append. Instead of:

$script = 'foo.pl'; # or $script = <STDIN>; chomp $script; $path = '/some/path/'; $script = $path . $script;
I'll do:
$script = '/some/path'; $script .= 'foo.pl'; # or $script .= <STDIN>; chomp $script;
Often, I find that this actually makes more sense in my head because I'm building my string from left to right, which is how I think of the string.

Alternatives is to build the string from pieces using sprintf or join. And, in my particular example, an option would be to use the join-like File::Spec.


Comment on Re: What operator prepends?
Select or Download Code
Re^2: What operator prepends?
by swampyankee (Parson) on Jan 25, 2006 at 21:56 UTC

    Why not just something like

    $string = $prefix . $string;

    emc

    " When in doubt, use brute force." — Ken Thompson

      First off, "= [...] ." isn't an operator as per the original topic. That's two operators. ;-)

      However, more importantly, this is just not how I mentally think of creating a string. If I want to generate a string such as "this is the output", I don't think about starting with the string "output" and prepending a bunch of stuff. I think about how to create "this", then I think of how to create "is", etc. It's actually quite rare that I'll want to generate "the" before I generate "is". In fact, I often end up with code like this:

      my @text; push @text, generate_this(); push @text, generate_is(); push @text, generate_the_output(); return join ' ', @text;
      That's just how I think of the string, and I find that when my code matches the problem in my head, it's far less likely to have bugs in it. Especially expensive design bugs.

        I also tend to create my strings from left to right, probably because that's how I tend to write. I add stuff to the end -- push vs unshift -- so a "prepend" operator is not something I would think to include in a language design.

        Perhaps inaccurately, I don't think of .= the "append" operator; I think of it as an abbreviation for $string = $string . $more.

        emc

        " When in doubt, use brute force." — Ken Thompson

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://525503]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (13)
As of 2014-09-22 13:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (192 votes), past polls