in reply to Re^2: Multiple Rows
in thread Multiple Rows
I'm not certain what you mean by lining up the rows; if you mean aligning the columns, then you could do something like use a table widget, instead of a label/ROText, like this:
#!/usr/bin/perl use strict; use warnings; use Tk; use Tk::ROText; use Tk::Table; my $hdb; my $window = MainWindow->new; $window->title("Host Report"); my $labs = $window->Table(-columns => 3, -rows => 5)->pack(-side => 'b +ottom'); $labs -> put (1, 1, "Results"); $window->Entry(-textvariable => \$hdb )->pack; $window->Button(-text => "Go", -command => \&host )->pack; $window->Button(-text => "Quit", -command => \&stop )->pack; MainLoop; sub host { #open (FH, "<", "host.txt"); my $row = 2; my $col = 0; my $x = 0; my @lines = <DATA>; print STDERR "@lines\n\n"; #close FH; foreach my $hdb2 (@lines) { chomp $hdb2; my @field = split(':',$hdb2); #if ($field[0] =~ /(?<![\w-])$hdb(?![\w-])/i) { for ($x=0; $x <=2; $x += 1) { $field[$x] = '' unless defined $field[$x]; my $tempLabel = $labs->Label(-text =>"$field[$x]", -anchor => +'w'); $labs->put($row, $x, $tempLabel); } $row += 1; #} } } sub stop{ exit; } __DATA__ these:lines are:the:lines that:you are:looking:at
Alternatively, you could get all the data you want to print in an array or other data structure, and use a text based approach to alignment (eg see 'padding with spaces' here: Using (s)printf())
If you meant something else, let me know and I'll try again...
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Multiple Rows
by PilotinControl (Pilgrim) on Oct 05, 2013 at 21:04 UTC | |
by mtmcc (Hermit) on Oct 05, 2013 at 21:31 UTC |