Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
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 examining the Monastery: (11)
As of 2015-07-06 12:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (74 votes), past polls