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

use warnings; use strict;
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...)

$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.

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
(Run under Windoze, so had to use ^Z instead of ^D.)

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:  <%-{-{-{-<