Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

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!

Comment on Print a string X times?
Download Code
Re: Print a string X times?
by almut (Canon) on Aug 03, 2010 at 23:53 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 toolic (Chancellor) on Aug 04, 2010 at 00:02 UTC
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..


      Vivek
      -- '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!


      s$$([},&%#}/&/]+}%&{})*;#$&&s&&$^X.($'^"%]=\&(|?*{%
      +.+=%;.#_}\&"^"-+%*).}%:##%}={~=~:.")&e&&s""`$''`"e
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'

      s$$([},&%#}/&/]+}%&{})*;#$&&s&&$^X.($'^"%]=\&(|?*{%
      +.+=%;.#_}\&"^"-+%*).}%:##%}={~=~:.")&e&&s""`$''`"e

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (11)
As of 2014-08-20 09:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (109 votes), past polls