in reply to Print format not working
@text_lines = <STDIN>; chomp($text_lines);
The statement chomp($text_lines); chomp-s the (nonexistent) scalar $text_lines not the @text_lines array. Always
at the start of your scripts. (Update: Actually, it's not accurate to describe $text_lines as "nonexistent": if strictures are not enabled (see strict), just referring to such a variable causes Perl to call it into existence. This is known as autovivification (see perlglossary), and such a scalar is initialized with a default value of undef. However, chomp-ing undef doesn't do very much, and the script never accesses $text_lines anywhere else, so...)use warnings; use strict;
$column = <STDIN>;
This leaves $column un-chomp-ed.
say "$ruler" x $column;
Not sure what this is supposed to do.
rrrrr eeeeee tyyyyy
This is just one line.
(Run under Windoze, so had to use ^Z instead of ^D.)c:\@Work\Perl\monks>perl -le "use 5.010; ;; use warnings; use strict; ;; say 'Please enter a few lines of text. Press ctrl-Z when finished'; my @text_lines = <STDIN>; chomp(@text_lines); ;; say 'Please enter the width of the column: '; my $column = <STDIN>; chomp $column; ;; my $ruler = '1234567890'; say $ruler x $column; ;; foreach (@text_lines) { printf qq{%${column}s\n}, $_; } " Please enter a few lines of text. Press ctrl-Z when finished xyzzy now is the time for all good men x foo bar ^Z Please enter the width of the column: 7 1234567890123456789012345678901234567890123456789012345678901234567890 xyzzy now is the time for all good men x foo bar
Update: Try
printf qq{%*s\n}, $column, $_;
as an experiment (see * format specifier in sprintf specifier definitions).
(Update: Tried that? Ok, now try
printf qq{%*.*s\n}, $column, $column, $_;
also.)
Give a man a fish: <%-{-{-{-<
|
|---|