Perlを勉強中、以下(注1)の内容をhello.plに記述して
MS-DOSでperl hello.plとタイプしました。そしたらC:\Perl>が
消えて、左端にカーソルが点滅するだけになってしまいした。
MS-DOSの右上にある x ボタンを押して終了しようとすると、
以下(注2)のダイアログが、出てしまいます。
EXITと入力しても、下の行にEXITと表示されるだけで終了できません。
また、タイトルバーがPERLになっているのはなぜなんでしょう?
ご存知の方いましたら、お願いします。

Windows 98

IE 5.5

SHARP Mebius MJ-10

注1

for ($i = 0; $i <= $#ARGV; $i++) {
open(IN, $ARGV[$i]);
while (<IN>) {
print;
}
close(IN);
}

注2

PERL

このプログラムを自動的にシャットダウンすることはできません。
プログラムの終了コマンドを使ってください。

プログラムで頻繁にエラーが発生する場合は、[スタート]メニューの[ヘルプ]を選び、
トラブルシューティングの「MS-DOSに関する問題」を参照してください。

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

A 回答 (4件)

>MS-DOS プロンプトでスクロールバーを表示する方法ご存知でしたら教えて頂きたいのですが。



えと、Win98/Meでは、コマンドプロンプトにスクロールバーは付きません。
ずらーーっと流れていくテキストを見るためには、一般的には「ページャ」を呼ばれるソフトを使います。

例えば、コマンドプロンプトで、
Dir | More
と打ち込んでみてください。dirの出力が、1画面ごとに区切られて出力されたと思います。

「|」はパイプといって、あるプログラムの出力を別のプログラムに渡す働きがあります。
「More」はページャと呼ばれるタイプのソフトで、どこかから入力を受け取って、1画面ごとに区切って画面に表示するプログラムです。

More以外にもページャはあります。「MIEL」(↓)なんか使いやすいですね。
http://www.vector.co.jp/soft/dos/util/se004783.h …


使用するコマンドによっては、1画面ごとに区切って表示するオプションが装備されているものもあります。
Dir /p
などとしても、1画面ごとの出力になりますよね。
また、Windows2000/XPでは、コマンドプロンプトにスクロールバーが付くのでそれを利用すればいいですね。
    • good
    • 0
この回答へのお礼

MIELは、カーソルが使えるんですね。後で、DL してみます。
3回もレスくださって、ありがとうございました。

お礼日時:2001/12/11 22:09

>MS-DOS を終了する時って、x (閉じるボタン) で終了してはいけないのでしょうか?



C:\>などのプロンプトが表示されている状況では×でいいですが、今回の場合、まだPerlが動作中なんです。
キーボードから入力できるとありますが、これは、Perlがキーボードからの入力を受け取っているっていう状態なのです。

つまり
while (<IN>) {
print;
}
の部分がまだ実行中なんですね。

<IN>に、キーボードからの入力が割り当てられている為、
1:「while (<IN>){」でキーボードからの入力を受け取る
2:「print;」で、それを画面に表示する。
3:「}」で1:に戻る

というプログラムがずっと動いているわけです。(だからタイトルバーが「Perl」になっているのです。)

で、<IN>に何らかのファイルが割り当てられているときには、ファイルの末尾に達すればこのプログラムは停止しますよね。
キーボードからの入力の場合は、何らかの形で「ファイルの末尾」に相当する部分を作らなければなりません。
それが、「Ctrl+Z」なのです。
    • good
    • 0
この回答へのお礼

ARCさんの解説わかりやすくて、助かりました。
どうりで、何回 EXIT と打っても EXIT と返ってくるんですね。

それと、もうひとつ質問よろしいでしょうか?
MS-DOS プロンプトでスクロールバーを表示する方法ご存知でしたら教えて頂きたいのですが。
よろしくお願いします。

注1のソース間違えて書いてしまいました。すみません。
実際は、下記のソースでした・・・。

while (<>) {
print;
}

お礼日時:2001/12/11 20:03

>MS-DOS を終了する時って、x (閉じるボタン) で終了してはいけないのでしょうか?



プログラムが動いている状態では、ばつで閉じようとすると警告が出ます。

コマンドコンソールと同じようにカーソルが点滅しているだけでも、この場合perlが実行状態だったので、警告が表示されたのでしょう。

今回の場合[CTL-Z]で対応できたようですが[CTL-C]も覚えておいた方が良いかも。
[CTL-Z]:ファイルの終了を表すEOFを送る。
[CTL-C]:標準入出力中にPGを強制終了する。
    • good
    • 0
この回答へのお礼

Ctrl + Z を押したらタイトルバーが PERL から MS-DOS プロンプトに戻りました。
ありがとうございました。

お礼日時:2001/12/11 20:01

えーっと、これで全文ですか?


これより前にファイル名を設定している部分があると思うのですが…

例えば、ファイル名が"con"などとなってませんか?

試しに、Ctrl+Zキーを入力してみてください。
これで元の画面に戻るようでしたら、「ファイルを読み込む」代わりに「ユーザからの入力」を読み取ってしまってるのが原因ですね。

きちんと存在するファイルの名前を指定してやれば、うまく動くと思いますよ。

あと、これは蛇足になりますが、open…の行を
open(IN, $ARGV[$i]) || die "Can't open file: $!";
などとすると、存在しないファイル名を指定したときとかにエラーを表示してくれますよ。
|| die …
を付けないと、場合によってはデバッグが困難になります。

この回答への補足

Ctrl + Z を押したら C:\Perl に戻りました。ありがとうございます。
MS-DOS を終了する時って、x (閉じるボタン) で終了してはいけないのでしょうか?
昨日まで、 x(閉じるボタン) で終了していました。

補足日時:2001/12/11 08:08
    • good
    • 0

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

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

QMS-DOS

IMB ThinkPad98のノートです。電源を入れるとロゴに続いて
「Windows98 is now starting your MS-DOS-based program
C:WINDOWS> _
上記のように表示がでます
カーソルのところに何を入れれば立ち上がるのでしょうか
なお、電源を入れた際、F8キーを押すとサーフモードでは立ち上がりますが、「機能の一部がつかえません」と警告がでます。宜しくお願いします

 

Aベストアンサー

全然違ってるかもしれないけど、

exit (return)

はどうでしょう?

QMS-DOS

Win98で
MS-DOSを使うとき


Microsoft(R) Windows 98
(C)Copyright Microsoft Corp 1981-1999.

C:\WINDOWS>

と出で、
ディレクトリを変えるとき
C:\WINDOWS>
のあとに
たとえばD:\へなら
C:\WINDOWS>D:\
としますよね。
ところが
C:\WINDOWS>D:\
と入れEnterを押すと
ふつうなら
D:\
なのに
D:\Program Files
などいくつか奥のディレクトリになってしまいます。
ちゃんとできる方法を教えてください。

Aベストアンサー

 kabasanが指摘しているのとは別の可能性として

>何かソフトをインストールした覚えはありません。
 であれば・・・・
 Dドライブに Program Files を作り、そこにソフトをインストールしているようですが、そのソフト(あるいはそのディレクトリに、なんらかのファイルを置いているソフト)をスタートアップで立ち上げるようにしたか、常駐するようにしませんでしたか?
 これは、「そのソフトがいったん起動した後、終了している場合」も含めますし、市販ソフトであるか、フリーソフトなどのオンラインソフトであるかは関係ありません。

 そうであれば、そのソフトが、Dドライブのカレントディレクトリをそのディレクトリに変更(そのディレクトリに用事があった)したため、そういった状態になっていると思われます。

 以下、この推測が当たっているものとして書きます。

>前は一回で D:\ へ行けました。
 それは、Dドライブにファイルがあるソフトが起動していない状態だったからでしょう。
 Dドライブにファイルがあるプログラムを起動していない状態なら、Dドライブはルートディレクトリがカレントディレクトリになっていますので、ドライブ移動だけでルートに移動したのです。
 セーフモードで立ち上げた直後にDOSプロンプトを起動して、D: とすれば D:\ に移りますよ。ひょっとしたら、SHIFTキーを押しながら起動するだけでも(スタートアップを無効にする)だけでも、D: で D:\ に行くかもしれませんね。


 Dドライブにいくつかのソフトをインストールしている以上、はっきり言ってどうしようも無いので、素直に
cd \
 としてもらうのが一番かと思います。

 どうしても、D: としたときにD:\に行かせたいのなら、
◆「スタートアップに登録ソフト」「常駐ソフト」など起動に実行するソフトをインストールするドライブをCドライブに変更する。
◆D:\に移動するBATファイルを作って、passの通っているディレクトリに入れておく

 位しか私は思いつきません。ただし、一つ目のパターンは、プログラムを起動したら、カレントディレクトリが移動するかもしれませんので制限付きの回避方法です。



 さて、日本語入力モードについてですが、DOS窓ですよね?
 「MS-DOSモードでの起動」はほとんど利用しないため記憶に無いですからDOS窓での話ですが、私の使っているWin95やWin98は「Alt+漢字キー」で問題なく日本語入力モードに移行できますけど、できませんか?
 最近のMS-IMEは「漢字キー」を押すだけで、日本語入力モードになるので単独キー押ししか知らない人が増えているようですが、元々は日本語入力モードへは「Alt+漢字キー」が必要です。


#カレントディレクトリ=現在ユーザーが作業をしているディレクトリ
  http://yougo.ascii24.com/gh/04/000430.html より
#カレントドライブ=現在ユーザーが作業をしているドライブ
#ディレクトリ(MS-DOS用語)=フォルダ(Windows用語)
#「漢字キー」=「半角/全角キー」

 kabasanが指摘しているのとは別の可能性として

>何かソフトをインストールした覚えはありません。
 であれば・・・・
 Dドライブに Program Files を作り、そこにソフトをインストールしているようですが、そのソフト(あるいはそのディレクトリに、なんらかのファイルを置いているソフト)をスタートアップで立ち上げるようにしたか、常駐するようにしませんでしたか?
 これは、「そのソフトがいったん起動した後、終了している場合」も含めますし、市販ソフトであるか、フリーソフトなどのオンライ...続きを読む

Qms-dosから

 osを 再インストールしたいのですが、起動DISKでは PCカード+CD ROMを認識してくれず、すでにフォーマットしてしまったNOTE AL-N1[パナソニック]は、残る手段として、CDDの取り外ししかないのか? と困っております。どうしてもそれに自信がないのですが・・・

起動DISKで立ち上がった画面から 例えばDOS COMMANDで

1. ケーブル接続の設定をして もう1台のパソコンからWINをCOPYする
2. LANで繋いで       もう1台のパソコンからWINをCOPYする
そこからSETUP.EXEを立ち上げる・・なんて
こんな事 できます?
パソコン始めて1年程度の 駆け出しですが何かよい手がありましたら お願いします

Aベストアンサー

補足と訂正です。

私は正規のDOS(IBMのPC-DOS J/7.0V)のライセンスを持っているので、これをインストールしてCDドライブを認識させています。起動ディスクのみで前記方法を試したことはありません。
また、先の回答でinterlnkはDOS/Vでは使えないと記載しましたが、これは誤りでした。interlnkはDOS/Vに対応したコマンドで、NECのPC-98シリーズでこれに相当するコマンドはMaxlinkでした。DOS(MS-DOS6.2又はPC-DOS J6.3/V以降)を入手すればパラレルポートでケーブル接続ができます。

先に紹介したCDドライブのドライバは製品に付属していますし、なくてもメーカーのサイトからダウンロードできます。また、DOSも再インストールの目的で使用するならパラレルポートさえ使えれば良いのですから、もっと古い化石のようなバージョンでも目的を達することができます。Yahooのオークションなどでも結構出物があります。

QMS-DOSとワープロ書類の変換

友人に質問され、解決できないのでここで質問させて頂きます。

友人がパナソニックのワープロ(機種名不明。FDDは2DDしか使えないワープロです。カラーになる前のかなり古いワープロ)で作った書類をDOS変換で保存し、Win機(PC9821シリーズ、Win3.1がプリインストールされていた)のMS-DOSで読み込み、そこで読み込んだものをMS-DOSで保存し直し、現在使用しているWin98で読み込みをしていました。

しかし、この度、ワープロとWin98を仲介(?)する役目を担っていたWin3.1がクラッシュし、修復不可能になってしまいました。
ワープロ→Win98だと読み込みはMS-DOSのバージョンが違うらしく(正確なバージョンは私も本人も分からないのです)、読み込み不能で、変換作業中のため大変困っている模様です。

分かりづらい質問で申し訳ありませんが、ワープロ→Win98でスマートに読み込ませる方法などありましたら、御伝授願えたらと思います。
私自身はMS-DOSをほとんど触らず、Macユーザーに転じてしまった者なので、足りない情報が多々あるとは思いますがよろしくお願い致します。

友人に質問され、解決できないのでここで質問させて頂きます。

友人がパナソニックのワープロ(機種名不明。FDDは2DDしか使えないワープロです。カラーになる前のかなり古いワープロ)で作った書類をDOS変換で保存し、Win機(PC9821シリーズ、Win3.1がプリインストールされていた)のMS-DOSで読み込み、そこで読み込んだものをMS-DOSで保存し直し、現在使用しているWin98で読み込みをしていました。

しかし、この度、ワープロとWin98を仲介(?)する役目を担っていたWin3.1がクラッシュし、修復不可能にな...続きを読む

Aベストアンサー

「コンバートスターライト13」というソフトで変換できるのではないかと思います。

http://www.vector.co.jp/soft/win95/util/se203483.html

参考URL:http://www.systemport.co.jp/

Q拡張MS-DOS領域が消せません

WIN98を再インストールする際に、FDISKコマンドでパーテションを
きりなおしていました。(もともとWIN2000がインストールされていたマシンに再インストールしました。)基本MS-DOS領域は削除できたのですが、「拡張MS-DOSが消せません。」ドライブの内容を見ると、論理ドライブが存在しています。と出るので、削除しようとすると、「論理ドライブは存在していません。」とでます。なら、論理ドライブを設定しようとすると、「すべての拡張領域は論理ドライブに割り当てられています」とでてしまいます。何回か再起動をしてやっていますが結果は同じです。20GのDISKで10Gの基本領域と、10Gの論理ドライブに分けて、WIN98をインストールしたいのですが、このままではDドライブ(論理ドライブ)が作れません。どのようにしたらいいかお助けください。システムはcyrix c3 1giga-proです。

Aベストアンサー

元々Win2000がインストールされていたということですが、
論理ドライブがNTFSでフォーマットされていたのではないですか?
(Win98のFDISKではNTFSは表示されませんから)

もし、そうなら、Win2000のインストールCD-ROMを起動して、
インストールパーティションの選択時に論理ドライブを削除すれば、
Win98のFDISKでパーティションの切りなおしができると思います。


人気Q&Aランキング

おすすめ情報