Q1.perlのファイルをMS-DOSで動作確認しようとしても
できません。 

ファイルが見つからないと答えてくるのです。

Q2.それとマイドキュメントをDOSで指定することは
出来ないのでしょうか?


初心者ですのでわかりやすく教えていただければ幸い
です。

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

A 回答 (2件)

使っているOSは何でしょうか?(Win95/98/NT/2000)



■Q1について
MS-DOSは使っていないですよね?

多分、DOS窓またはDOSモードの起動と考えてよろしいでしょうか?

>ファイルが見つからないと答えてくるのです。

何と言うファイルがないとメッセージが出ていますか?
教えて貰えないとどんな問題が起きているかわかりません?
例えば、perl.exeファイルが無い場合には、perl.exeまでのパスの設定が必要になります。

■Q2について

>それとマイドキュメントをDOSで指定することは出来ないのでしょうか?

マイドキュメントの中にあるファイルを指定したいのでしょうか?
例えば、A.txtと言うファイルがマイドキュメントにある場合

C:\MYDOCU~1\A.txt

~:チルダの入力方法は、Shiftキーを押しながら”へ”のキーを押します。

この回答への補足

ありがとうございます。

>多分、DOS窓またはDOSモードの起動と考えてよろしいでしょうか?

スタートメニューのプログラムからMS-DOSプロンプトを開いてるのですけど、それをDOS窓と呼ぶのでしょうか?MS-DOSとは別物なんでしょうか?

>何と言うファイルがないとメッセージが出ていますか?

コマンドまたはファイル名が違います

と表示されます。

実はそれ以前の問題としてPerlのソフトをインストールをしていないことがすぐ後でわかったのです。
ご迷惑をお詫びします。

補足日時:2001/08/07 23:52
    • good
    • 0
この回答へのお礼

ありがとうございます。

>C:\MYDOCU~1\A.txt

これでマイドキュメントで仕事ができます。

すいません。ついでに質問なんですが、

デスクトップの場合はどうなんでしょう?

もしその辺の知識を得る為には何を勉強したらいいでしょか?最適な本がありましたら教えて下さい。

お礼日時:2001/08/08 00:06

>スタートメニューのプログラムからMS-DOSプロンプトを開いてるのですけど、それをDOS窓と呼ぶのでしょうか?



そうです。

>MS-DOSとは別物なんでしょうか?

MS-DOSと言うと、Windowsが出てくる前から使われていたOSの事を普通考えます。
今回の場合には、例えばWindows98のコマンドプロンプト画面(DOS窓)と言う言い方をしないと正しく伝わりません。

>デスクトップの場合はどうなんでしょう?

例えば、今回もA.txtとして考えると下記のよに入力っします。

C:\WINDOWS\デスクトップ\A.txt

>もしその辺の知識を得る為には何を勉強したらいいでしょか?最適な本がありましたら教えて下さい。

その辺の知識というのがよくわかりません。
DOSコマンドの事だったら、MS-DOSの本になると思います。
DOS窓でロングネームをどう表現するのかと言う話でしたら、書いてある本は知りません。
DOSでは、半角8文字しかつかえないと言う事と、DIRで表示される名前から他に考えられないので当たり前のように使っていました。
    • good
    • 0
この回答へのお礼

助かりました。
MS-DOSを勉強しないといけないようですね。

Gould09さんどうもありがとうございました。

お礼日時:2001/08/08 12:41

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

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

QMS-DOSでperl実行時にコマンドプロンプトが認識されず困っていま

MS-DOSでperl実行時にコマンドプロンプトが認識されず困っています。

Active Perlをインストールして、Tera-Padでスクリプトを書き、MS-DOSでテストしています。
"du"や"ls"などのコマンドを(``)で囲ってスクリプトに記述すると、「`du`は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」というエラーが出てしまいます。winfaqを参照し、
http://homepage2.nifty.com/winfaq/w2k/trouble.html#1467
環境変数を設定しました。(但し、環境変数に設定しているのは下記の1行のみではありません。すでに1つ別のソフトインストールで自分でPATHを設定していますので、今回は";"で下の1行を追加しました。)
%SystemRoot%;%SystemRoot%\System32;%SystemRoot%\System32\Wbem

そしてPCを再起動しても事象は変わりません。
因みに、Active Perlは「C:\perl」フォルダにファイルがあります。binはその下にあり、環境変数にも「C:\perl\bin」として追加済みです。
いろいろと試してみたのですが、原因がわからず困っています。
ぜひアドバイスをいただければ大変助かります。
どうぞ宜しくお願い致します。

MS-DOSでperl実行時にコマンドプロンプトが認識されず困っています。

Active Perlをインストールして、Tera-Padでスクリプトを書き、MS-DOSでテストしています。
"du"や"ls"などのコマンドを(``)で囲ってスクリプトに記述すると、「`du`は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」というエラーが出てしまいます。winfaqを参照し、
http://homepage2.nifty.com/winfaq/w2k/trouble.html#1467
環境変数を設定しました。(但し、環境変数に設定してい...続きを読む

Aベストアンサー

バッククオートでくくられた文字列は、それを外部コマンドとして実行し、その出力結果になります。
Windows + Active Perl の場合なら、シェルとしてcmdか使われると思います。

lsやduはunixでは標準とも言えるコマンドです。
Perl の一部ではありません。別物です。
Windowsにも入っていません。

対策としては
・ls、du等のUnix系のツールのWindows移植版を使う
 例えば http://gnuwin32.sourceforge.net/
・同等の処理をPerlで作る
・同等の処理をする別コマンドで代用する
 ls→DIR 等。オプションや表示が変わるのでスクリプトにも変更が必要
・MinGW,Cygwin等の環境をインストールして、それ用のPerlを使う
・仮想環境でLinux等のunix系のOSを使う

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 でrequireされたファイル自身のフルファイル名を取得する

perl でrequireされたファイル自身のフルファイル名を取得する方法を教えてください

__FILE__ だとパス情報がありません。

また 起動したスクリプトではないので
$ENV["SCRIPT_FILENAME"] , $0
では、取得できません。

どこに格納されているのでしょうか?
%INCでは、無理ですし、@INCを使う方法では、信憑性にかけます

requireするときにパスをグローバル変数に代入せずに
どうしてもrequireされたファイル自身で
確実に正確な同じフォルダ名を取得する必要があるのでお願いします。

(※phpでは、__FILE__でフルパスで返ってくるので私の探し方が悪いだけだと思っています)

perlでの取得方法の情報を
お手数ですがよろしくお願いします

Aベストアンサー

use Cwd 'abs_path';
print abs_path(__FILE__);

または

use File::Spec;
print File::Spec->rel2abs(__FILE__);

どちらも標準モジュールのようなので、すぐ利用可かと。

Qperlでファイルを分割してファイル名も出力したい

>AA A AAA
aaaaaaaaaaaaaaa
aaaaaaaaaaaa
>BBB BB B
bbbbbbbbbbbbbbb
bbbbbbbbbbbbbbb
bbbbbbbbbbbbbb



こういった形式でテキストが入った大きいサイズのひとつのファイルを

・ファイル名
AA A AAA
・テキスト内
>AA A AAA
aaaaaaaaaaaaaaa
aaaaaaaaaaaa

・ファイル名
BBB BB B
・テキスト内
>BBB BB B
bbbbbbbbbbbbbbb
bbbbbbbbbbbbbbb
bbbbbbbbbbbbbb

となるように個別に出力させたいのですがどのようにすればよいでしょうか?


#!/usr/bin/perl -w
use strict;

my $first;
my $file;

$first = 1;
open(IN,"分割前ファイル");
foreach(<IN>) {
if ( /^>(.*)/ ) {
if ($first == 0 ) { close(OUT); }
else {$first = 0; }
$file = $1;
$file =~ s/[\r\n]//;
open(OUT,">$file");
} else {
print OUT $1;
print OUT $_;
}
}
close(IN);


このようなプログラムを組んだのですが、出力結果はファイル名についてはいいのですが、テキスト内が思ったようにいきません。

・ファイル名
AA A AAA
・テキスト内
AA A AAAaaaaaaaaaaaaaaa
AA A AAAaaaaaaaaaaaa

このような結果になってしまいます。
どなたか対処方をわかるかたがいましたらお願いします。

>AA A AAA
aaaaaaaaaaaaaaa
aaaaaaaaaaaa
>BBB BB B
bbbbbbbbbbbbbbb
bbbbbbbbbbbbbbb
bbbbbbbbbbbbbb



こういった形式でテキストが入った大きいサイズのひとつのファイルを

・ファイル名
AA A AAA
・テキスト内
>AA A AAA
aaaaaaaaaaaaaaa
aaaaaaaaaaaa

・ファイル名
BBB BB B
・テキスト内
>BBB BB B
bbbbbbbbbbbbbbb
bbbbbbbbbbbbbbb
bbbbbbbbbbbbbb

となるように個別に出力させたいのですがどのようにすればよいでしょうか?


#!/usr/bin/perl -w
use strict;

my $first;
my $file;

$first = 1;
o...続きを読む

Aベストアンサー

ほとんどできてます。がんばってください。
print OUT $1;
は最初の一発だけ出せばいいのでopenのあとに移動すればいいでしょう。
そのあとに改行(\n)も忘れずに。


人気Q&Aランキング

おすすめ情報