2011-04-05 107 views
1

我知道這不是一個新問題..但我嘗試按照從其他帖子制定出的解決方案...但是在我的文本區域沒有任何可打印的內容..如果我直接在我的文本文件上打印一個句子。它的工作......爲什麼?您的代碼無法讀取perl/tk中的文件內容TEXT

#!/usr/local/bin/perl 
use Tk; 
use File::Tail; 

#Main Window 
my $mw = new MainWindow; 
$mw-> title ("Packet Analyzer Tool"); 

my $frm_1 = $mw -> Frame() -> pack(); 
my $frm_2 = $mw -> Frame() -> pack(); 
my $frm_3 = $mw -> Frame() -> pack(); 
my $frm_4 = $frm_3 -> Frame(-relief => 'groove', -borderwidth =>2) -> pack(-side => "left"); 
my $frm_5 = $frm_3 -> Frame() -> pack(-side => "right",-after => $frm_4); 

my $but1 = $frm_1 -> Button(-text => "Start", 
-command =>\&push_start) 
-> pack(-side => "left", -anchor => 'nw', -ipadx => 30, -ipady => 35); 

my $but2 = $frm_1 -> Button(-text => "Stop", 
-command =>\&push_stop) 
-> pack(-side => "left",-after =>$but1, -expand => 1,-ipadx => 30, -ipady => 35); 

my $but3 = $frm_1 -> Button(-text => "Pause", 
-command =>\&push_pause) 
-> pack(-side => "left",-after => $but2 ,-ipadx => 30, -ipady => 35); 

my $but4 = $frm_1 -> Button(-text => "Exit", 
-command =>\&push_exit) 
-> pack(-side => "left", -after => $but3 ,-ipadx => 30, -ipady => 35); 

my $filter = $frm_2 ->Entry(-width => 65) -> pack(-side =>"left",-anchor => 's'); 
my $but5 = $frm_2 -> Button(-text => "Search", -command =>\&push_search) 
->pack(-side => "left", -after => $filter, -ipadx => 10); 

my $txt1 = $frm_4 -> Text(-width => 60, -height =>20) 
-> pack(-side =>"left",-anchor => 's'); 
my $srl = $frm_4 -> Scrollbar(-orient=>'v', -command =>[yview => $txt]); 
$txt1 -> configure(-yscrollcommand =>['set',$srl]); 


$txt1 -> grid(-row=>1, -column=>1); 
$srl -> grid(-row=>1, -column=>2,-sticky=>"ns"); 

my $txt2 = $frm_5 -> Text(-width => 15, -height =>20) 
-> pack(-side=>"right", -anchor => 'e'); 

MainLoop; 

#Executed START BUTTON 
sub push_start 
{ 
open my $fh,'<','/home/terrance/Desktop/perl/record.txt' || die $!; 
my @contents = <$fh>; 
foreach my $line (@contents) 
{ 
$txt1 ->insert("end", $line); 
} 


#$txt1 -> insert ('end', "hello due\n"); 
} 
+0

請縮進您的代碼。 – 2011-04-05 11:15:55

回答

7

使用perltidy並添加

use strict; 
use warnings; 

然後你會趕上

  1. my $srl = $frm_4->Scrollbar(-orient => 'v', -command => [ yview => $txt ]);

  2. 的$ TXT => $ txt1中錯字失蹤my @contents = <$fh>;

  3. foreach my $line (@contetns)錯字

關於第二個想法:你確定,該文件存在並且可訪問?