#!/usr/local/bin/perl
use Tk;
# Main Window
$mw = new MainWindow;
$label = $mw -> Label(-text=>"Hello World") -> pack();
$button = $mw -> Button(-text => "Quit",
-command => sub { exit }) -> pack();
MainLoop;
このコードでは、$button
ボタンを押すとプログラムが終了します。これはexitコマンドを実行するためです。ユーザーがボタンをクリックするとiptablesルール(iptables -F
)がフラッシュされるようにコードを修正したいと思います。これどうやってするの?Perl-Tkでボタンウィジェットを使ってコマンドを実行する
私はこれを試してみました:
$button = $mw -> Button(-text => "Flush the rules",
-command => system (iptables -F)) -> pack();
なぜこの作業ではないのですか?私はそれのためのサブルーチンを作成する必要があります(その後、iptables -F
コマンドを書いてください)し、そのサブルーチンを呼び出しますか?上記のコードのように直接コマンドを置くことはできませんか?
@ System()関数は、Buttonが定義されているときに呼び出されます。 私はプログラムを実行すると、ルールが定義された時点でルールがフラッシュされることを意味します。 –
私は[類似の質問](http://stackoverflow.com/q/5947681/734153)でした。 [この記事](http://stackoverflow.com/questions/2620461/do-i-always-have-to-provide-tkxs-command-argument-an-anonymous-subroutine#2622318)はMartinの説明を詳しく説明しています – kshenoy