windows 98SE 上で perl/tk を使って GUI プログラミングに挑戦!と思ったのですが、
MainWindow が出る前に、必ず DOS窓が一瞬現れて消えるのが、どうも気になります。

この DOS窓を出さない方法はあるのでしょうか?
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

perl.exeではなくwperl.exeがスクリプトを実行するように仕込んでおけば、コマンドプロンプトを表示せずに起動するようになります。



例えばWindows + ActivePerlでは通常は拡張子*.plをperl.exeで起動するように設定していると思いますので拡張子*.wplとかをwperl.exeで起動するように設定しておけばコマンドプロンプト無しで処理されます。

参考URL:http://www.mail-archive.com/activeperl@listserv. …
    • good
    • 0
この回答へのお礼

素晴らしい!。うまくいきました。
諦めかけてたので、大変うれしいです。
ありがとうございました。

お礼日時:2002/03/13 17:15

このQ&Aに関連する人気のQ&A

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

このQ&Aと関連する良く見られている質問

Qperl/tkを使って作ったGUIを実行すると。。。

perl/tkを使って作ったGUIを実行すると、DOS窓が開いたままの状態です。
GUIを閉じるとDOS窓も閉じます。
GUIを実行中、DOS窓が開かないようにできないのでしょうか?
perlのバージョンはv5.8.8。
osはxpです。

Aベストアンサー

BEGIN{
if ($^O eq 'MSWin32'){
require Win32::Console;
Win32::Console::Free();
}
}

Perl Cookbook, Second edition p612

Qperl/tkとtcl/tkの違いを知りたい

perl/tkとtcl/tkの違いを知りたい。
例えば、文法の違いだとか、互換性だとか、拡張性とかを
知りたい。宜しくお願いします。

Aベストアンサー

tkというのは、GUIのライブラリで、
それを、perlとかtclとかいった言語から使えるようにしたのが、perl/tk、tcl/tkです。

perlとtclは、全く違う言語ですから、文法は全く違いますし、互換性は全くありません。
ただ、tkという同じGUIライブラリを使用しているので、ライブラリの呼び出し方などはほぼ同じです。

Q条件部分の行だけ取り出すPerlが動きません(DOS窓)

------------------------------------ c:\work\a.bat
c:
cd \work
convert.pl sample.html
convert.pl sample1.html
convert.pl sample2.html


------------------------------------- c:\work\convert.pl
$infile=$ARGV[0];
$outfile=$ARGV[0];
# 変換後ファイルは、拡張子をtxtにして区別
$outfile=~ s/\.html/\.txt/;

# ファイルを開く
open( IN, $infile );
@xx = <IN>;
close(IN);

# 抽出行の先頭行番号を取得
$i=0;
for (@xx) {
if ($xx[$i]= ~ /Array/){
$start = $i;
last;
}
$i++;
}

# 抽出行の最後行番号を取得
for ($j = $start; $j <= 100; $j++) {
if ($xx[$j]= ~ /\)\;/){
$end = $i;
last;
}
$j++;
}

# 書き込み用にファイルを開く
open( OUT, "> $outfile" );

for ($k = $start; $k <= $end; $k++) {
print(OUT $xx[$k]);
}
# ファイルを閉じる
close( OUT );

------------------------------------- c:\work\sample.html
<html>
<head>
<script type="text/JavaScript">
<!--
sample();
var a = new Array("ああああ",
"いいいい",
"うううう");
var b = new Array("ええええ",
"おおおお",
"おおおお");
function init(){
}
--></script>
</head>
<body onload="init();">
</body>
</html>

------------------------------
というようにファイルを作り、a.batを実行すると、
htmlファイルのvar aに該当する行(sample.htmlの場合、6~8行目)だけ
取り出して別ファイルに吐き出すようなプログラムを作ってみたのですが、
うまく動きません。
なお、単純にforeach文で@xxをoutfileに出力するのはできました。
部分だけ取り出そうとすると失敗しました。

どこを直せばいいのでしょうか?

------------------------------------ c:\work\a.bat
c:
cd \work
convert.pl sample.html
convert.pl sample1.html
convert.pl sample2.html


------------------------------------- c:\work\convert.pl
$infile=$ARGV[0];
$outfile=$ARGV[0];
# 変換後ファイルは、拡張子をtxtにして区別
$outfile=~ s/\.html/\.txt/;

# ファイルを開く
open( IN, $infile );
@xx = <IN>;
close(IN);

# 抽出行の先頭行番号を取得
$i=0;
for (@xx) {
if ($xx[$i]= ~ /Array/){
$start = $i;
last;
...続きを読む

Aベストアンサー

なんかややこしいスクリプトなんで、読み間違ってたら申し訳ないんだけど、
最初に現れたArrayからその後の最初に現れた);までの範囲を
切り出したいと言う話なら、

#!/usr/bin/perl
# -*- coding: utf8 -*
use strict;
use warnings;
use Fatal qw(:void open close);
use feature ':5.10';


while (<>) {
my $cond = /Array/../\);/;
print if ($cond);
last if $cond =~ /E0$/;
}


こんなんとか。
Arrayと);に挟まれた部分全部という話なら

while (<>) {
print if /Array/ .. /\);/;
}

で。
ファイル名の付け替えとかその辺は面倒なので省略。

QDOS窓からネット上のperlスクリプトを呼びたい

現在、DOSバッチ&WINタスクスケジューラを使って自分のHPがあるサーバ上の更新されたデータファイルを定期的にバックアップしてます。
そこで、逆にデータファイルを定期的にアップしてその後、サーバ上のperl(データの分析や加工するもの)を起動したいと思っております。DOS窓から起動および終了できるHTTPクライアントなど、何か良い方法を知っている方がいらっしゃいましたらご教授願います。
ちなみに、ローカルPCではDOS起動が前提ということで検討しています。

Aベストアンサー

確認はしていませんが...

>コマンドラインから起動・終了できるテキストブラウザ
 IBMからPC-DOS用のブラウザが発売されていると思いましたが....。
 終了が出来たかどうかは記憶にないので、解りません。

QPerl/Tk Entry に対して見出しを付けたい

Win-XP,Active-Perl(v5.8.6)利用です。

複数のインプットボックスを持つ、
┌────────────┐
│   ┌───────┐│
│品名:│       ││
│   └───────┘│
│   ┌───────┐│
│科目:│       ││
│   └───────┘│
│   ┌───────┐│
│価格:│       ││
│   └───────┘│
│ ┌──┐┌─────┐│
│ │OK││キャンセル││
│ └──┘└─────┘│
└────────────┘
こんな感じのウィンドウを作りたいのですが、
(図が崩れているかも知れませんが大体のイメージで・・・)
========================================
use Tk;
$top = new MainWindow;
$arg[0] = $top->Entry(-title=>'品名:')->pack;
$arg[1] = $top->Entry(-title=>'科目:')->pack;
$arg[2] = $top->Entry(-title=>'価格:')->pack;
$b[0] = $top->Button(-text=>'OK',-command=> [\&exec,\@arg])->pack;
$b[1] = $top->Button(-text=>'キャンセル',-command=> [\&exec,(-1)])-pack;
========================================
unknown option "-title" at C:\Perl\site\lib/Tk/Widget.pm
Entryに対するオプションが分かりませんでした。

もしくは、Label や Message を組み合わせて実現するものでしょうか。
あと、実際に図のような配置でフォームを作りたい場合、
Buttonの部分の書き方はどのようにすれば良いですか?

以上、ご存知の方、ご教示よろしくお願い致します。

Win-XP,Active-Perl(v5.8.6)利用です。

複数のインプットボックスを持つ、
┌────────────┐
│   ┌───────┐│
│品名:│       ││
│   └───────┘│
│   ┌───────┐│
│科目:│       ││
│   └───────┘│
│   ┌───────┐│
│価格:│       ││
│   └───────┘│
│ ┌──┐┌─────┐│
│ │OK││キャンセル││
│ └──┘└─────┘│
└────────────┘
こんな感じのウィンドウを作りたいのですが、
(図が崩れているかも知れませんが大体のイメージで・・・)
===================...続きを読む

Aベストアンサー

use strict;
use warnings;
use Tk;

### Main Window
my $window = MainWindow->new();

### Frame
# Goods
my $goods_frame = $window->Frame(
-width => 240,
-height => 30,
-borderwidth => 2,
-relief => 'flat',
);
$goods_frame->pack();

# Price
my $price_frame = $window->Frame(
-width => 240,
-height => 30,
-borderwidth => 2,
-relief => 'flat',
);
$price_frame->pack();

# Confirm
my $confirm_frame = $window->Frame(
-width => 240,
-height => 30,
-borderwidth => 2,
-relief => 'flat',
);
$confirm_frame->pack();

### Widgets
# Goods Label
my $goods_label = $goods_frame->Label(
-text => 'Goods',
-width => 10
);
$goods_label->pack( -side => 'left' );

# Goods Entry
my $goods_entry = $goods_frame->Entry(
-width => 30,
-background => 'white'
);
$goods_entry->pack( -side => 'left' );

# Price Label
my $price_label = $price_frame->Label(
-text => 'Price',
-width => 10
);
$price_label->pack( -side => 'left' );

# Price Entry
my $price_entry = $price_frame->Entry(
-width => 30,
-background => 'white'
);
$price_entry->pack( -side => 'left' );

# OK Button
my $ok_button = $confirm_frame->Button( -text => 'OK', -width => 8 );
$ok_button->pack( -side => 'left' );

# Cancel Button
my $cancel_button = $confirm_frame->Button(
-text => 'Cancel',
-width => 8,
);
$cancel_button->pack( -side => 'left' );

### Loop
MainLoop();

use strict;
use warnings;
use Tk;

### Main Window
my $window = MainWindow->new();

### Frame
# Goods
my $goods_frame = $window->Frame(
-width => 240,
-height => 30,
-borderwidth => 2,
-relief => 'flat',
);
$goods_frame->pack();

# Price
my $price_frame = $window->Frame(
-width => 240,
-height => 30,
-borderwidth => 2,
-relief => 'flat',
);
$price_frame->pack();

# Confirm
my $confir...続きを読む


おすすめ情報