I'm glad you've made some progress.
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...
|