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

Print a string X times?

by rastoboy (Monk)
on Aug 03, 2010 at 23:47 UTC ( #852770=perlquestion: print w/replies, xml ) Need Help??
rastoboy has asked for the wisdom of the Perl Monks concerning the following question:

I know this is a silly question, but it's really bugging me. I need to print a bunch of -'s of an arbitrary computed length, such as:


or maybe:


At the moment I compute the length needed and do:

while ($length) { $separator .= '-'; }
I could have sworn I've read a simple way to simply say "print X this many times". It's just not very elegent or "perlish" seeming and I'd appreciate any feedback you care to give!

Replies are listed 'Best First'.
Re: Print a string X times?
by almut (Canon) on Aug 03, 2010 at 23:53 UTC
Re: Print a string X times?
by toolic (Bishop) on Aug 04, 2010 at 00:02 UTC
Re: Print a string X times?
by BrowserUk (Pope) on Aug 03, 2010 at 23:53 UTC
      OMG lol. I knew I'd seen something simple like that.

      Thank you very much.

Re: Print a string X times?
by cdarke (Prior) on Aug 04, 2010 at 06:01 UTC
    This is my personal favorite:
    local $, = ' '; print +('-') x $length,"\n";
      in the statement print +('-') x $length , "\n";

      the +('-') does some magic which I don't understand, could you please explain that statement..

      -- 'I' am not the body, 'I' am the 'soul/consciousness', which has no beginning or no end, no attachment or no aversion, nothing to attain or lose.

        From perlop: Symbolic Unary Operators:

        "Unary "+" has no effect whatsoever, even on strings. It is useful syntactically for separating a function name from a parenthesized expression that would otherwise be interpreted as the complete list of function arguments."

        Try removing the + and ensure you use strictures (well, warnings anyway) and see what happens.

        True laziness is hard work

      That's really usefull!

      ++ for that!

Re: Print a string X times?
by ikegami (Pope) on Aug 04, 2010 at 16:03 UTC
    And of course, there's
    print '-' for 1..$length;

    Previously mentioned "x" should be a bit faster at the cost of more memory.

      Or let's go for some obfuscation:

      perl -e 's;^$;sprintf"%80s",$/;e;y; ;-; ;print'


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://852770]
Approved by BrowserUk
[marto]: Salami_slicing
[Corion]: marto: Aah ;) Yeah - I guess I'll make the first changes to the old module, by extending its test suite to be more lenient, and then the switch to the new results should still pass the test suite :-D

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (8)
As of 2018-07-16 08:54 GMT
Find Nodes?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?

    Results (333 votes). Check out past polls.