Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Printing a specified number of characters

by Becky (Beadle)
on Jul 27, 2002 at 14:30 UTC ( [id://185746]=perlquestion: print w/replies, xml ) Need Help??

Becky has asked for the wisdom of the Perl Monks concerning the following question:

Is there a way of printing a specified number of characters? For example if I want to print 14 spaces followed by an 'A' ?

Extending this, could I do something like:

<code> $number = 5;
$number_two = 7;

print "$number(spaces) A $number_two(spaces) B \n";

  • Comment on Printing a specified number of characters

Replies are listed 'Best First'.
Re: Printing a specified number of characters
by kvale (Monsignor) on Jul 27, 2002 at 14:41 UTC
    A simple way of doing this is to use the  x repetition operator:
    print ' ' x $number, 'A', ' ' x $number_two, "B\n";
    -Mark
Re: Printing a specified number of characters
by tjh (Curate) on Jul 27, 2002 at 15:09 UTC
    Also, while this isn't a direct print as others have described, more information can be found in perlfaq4 about string padding here using sprintf. (Puts your reformatted string in a variable for later use.)

    Good, easy access to all Perl docs and FAQ's can be found here, and excellent tutorials from experienced monks are here on Perl Monks.

    HTH

Re: Printing a specified number of characters
by Nightblade (Beadle) on Jul 27, 2002 at 14:43 UTC
    you can do like this:  print " "x14 . "A";

    $number = 5; $number_two = 7; print ' 'x$number . "A" . ' 'x$number_two."B\n";
Re: Printing a specified number of characters
by grinder (Bishop) on Jul 28, 2002 at 22:27 UTC
    Apart from x, the repetition operator, you might also want to consider using printf/sprintf. The only problem is that your number also has to include the width of the character you want to print (i.e. the overall field width). This may or may not be a problem, depending on how you create the values of $number and $number_two. Anyway, the code to do it looks like:

    printf "%${number}s %${number_two}s\n", 'A', 'B';

    The variable name needs to be enclosed in curly braces to stop the interpreter from looking for the variables named $numbers and $number_twos. The idea is that %20s will print a value in a right-justified field of length 20. Rather than hard-coding the 20, we pick it up from a variable.


    print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u'

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (6)
As of 2024-04-19 04:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found