Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

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 = ''; # or $script = <STDIN>; chomp $script; $path = '/some/path/'; $script = $path . $script;
I'll do:
$script = '/some/path'; $script .= ''; # 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.

Replies are listed 'Best First'.
Re^2: What operator prepends?
by swampyankee (Parson) on Jan 25, 2006 at 21:56 UTC

    Why not just something like

    $string = $prefix . $string;


    " 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.


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

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://525503]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2018-05-21 19:20 GMT
Find Nodes?
    Voting Booth?