アプリ版:「スタンプのみでお礼する」機能のリリースについて

perlの出力結果を.txtにして出力しているのですが、出力先が.plのあるところ以外に指定することはできるのでしょうか?
<STDIN>でtxtデータを読み込んでいるのですが、例えば入力したtxtがCドライブのAというフォルダにある場合Aのフォルダ内に出力結果を出し、WドライブのBというフォルダのtxtを入力した場合はBのフォルダ内に出力結果を出したいです(入力したtxtと同じ場所に出力したい)。
わかる方がいたら教えてください、お願いします。m(_ _;m)

A 回答 (2件)

ダブルクリックでスクリプト起動して、


STDINでフルパス(W:\B\hoge.txt)を打ち込んでる、ってところでしょうか?
それなら正規表現でパスを取得して、出力パスに付加するとか。
    • good
    • 0

STDINということは、


perl script.pl < C:\A\入力.txt
とかやっているのでしょうか?

出力ファイルはどう指定しているのでしょうか?
出力はどのように行っているのでしょうか?


STDINから、ファイル名を得るのはできないように思います。
なので

方法1:
出力ファイルのパスが、「カレントディレクトリ」の場合、入力ファイルのあるディレクトリに移動して、スクリプトをパス付きで指定する
perl C:\ScriptDir\script.pl < 入力.txt

方法2:
出力をSTDOUTにするようにして、リダイレクトで指定する
perl script.pl < C:\A\入力.txt > C:\A\出力.txt

方法3:
< を使わずに、引数として入力ファイルを指定。
スクリプト内でopenで入力ファイルを開く
出力ファイルは、入力ファイル名から加工する

実行方法
perl script.pl C:\A\入力.txt

スクリプト例:
$inputfile=ARGV[0];
$outputfile= $inputfile を加工したもの;
open FIN,'<', $inputfile;
open FOUT,'>', $outputfile;
while (<FIN>) { # <STDIN>はやめる

print FOUT "出力内容";
}
    • good
    • 0

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