プロが教える店舗&オフィスのセキュリティ対策術

Win2000+ActivePerl 5.8.7 の環境です。
PerlでGUIということで、メッセージボックスであれば、次のようにして実現できました。
------------
use Win32;
my $msg = $ARGV[0];
my $icon = $ARGV[1];
my $caption = $ARGV[2];
my $result = Win32::MsgBox($msg, $ico, $caption);
print "$result\n";
------------

これと同様に、InputBoxのようなこと
--------------------------------
ダイアログウィンドウを表示し、文字列の入力を促して、
Enterすると、スクリプト内の関数戻り値として、その文字列を
取得できるようなもの。
--------------------------------
が出来ないでしょうか。
ネット上色々と探し回ってみましたが、単純には見つかりませんでした。
( Haven't yet implemented function inputbox...)

何か自分で組み合わせて作成する必要があるのでしょうか?
(DOS窓経由であれば、単純に、$txt=<STDIN>; で取れるのですが)
よろしくご教示ください。

A 回答 (1件)

こんなんどうでしょう。


ちょっと長いですが、複数の情報を取得したり拡張性はあります。

use Tk;

my $top = MainWindow->new();
my $ent_txt = "Enter your name.";
my $entry = $top->Entry(-textvariable=> \$ent_txt, -width=>'20' );
$entry->pack(-side=>'left');
my $btn1 = $top->Button(-text=>'OK',-command=> [\&get_name,\$ent_txt] );
$btn1->pack(-side=>'left');
my $btn2 = $top->Button(-text=>'C',-command=> sub{$ent_txt='';} );
$btn2->pack(-side=>'left');
MainLoop;

sub get_name{
$top->destroy();
my $ref_input = shift;
my $input = $$ref_input;
print "Your name is $input.";
}

この回答への補足

ご回答、大変ありがとうございました。
ちなみに、Perl/Tk というものを使わずに、
同様のことは出来るのでしょうか?
(Perl/Tkが入っておらず、ネットにもつなげないような環境に
遭遇した時を想定してのことですが、無用な心配でしょうか・・・)

補足日時:2006/10/24 16:46
    • good
    • 0
この回答へのお礼

そうです、こんな感じのやつを求めていました。
use Tk;・・・使えるのかなと思ったら、あっさり動きました。
ActivePerlもv5.xx辺りになると、ほとんど標準でPerl/Tk というのが付いてくるんですね。
今さら常識なのでしょうか、遅れていて恥ずかしい限りです。
----
http://www.geocities.jp/m_hiroi/perl_tk/perltk_g …
からの引用で、
「Perl/Tk でプログラムを作成する場合、 Perl 5 で導入された機能「オブジェクト指向」と「リファレンス」の知識が必要になります・・・
・・・これらの機能を理解していないと Perl/Tk を使いこなすことは難しいのですが・・・」
うわ、理解してないので、大変そうです。

お礼日時:2006/10/24 16:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!