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

前提:
current directory---perl scriptが存在する
data directory -----.\DATA¥

current directory直下のフォルダ"DATA"に含まれるファイル名(text file)の取得は、
------------------------------
opendir(DIR,"./DATA/");
@file=readdir(DIR);
closedir(DIR);

foreach $myfilename(@file){
if($myfilename=~/txt|TXT/){
print "$myfilename\n"; #確認用
}
}

で、できますが、フルパス付は、どのようにすればできるでしょうか?

現状、DOS promptで下記のようにやっています。
dir /s/b/o .\DATA\*.txt > filelist.dat
これを、perlで読み込んで、処理をやっています。

readdirをうまく使って、perlの中で済ませてしまいたいのです。
よろしくお願いいたします。

A 回答 (2件)

use Cwd;


$wd = Cwd::getcwd();

又は

require 'getcwd.pl';
$wd = &getcwd();

で、カレントディレクトリを調べて

$fullpath = "$wd/DATA/$myfilename";

で、どうでしょう?

この回答への補足

venzouさん、ありがとうございます。
小生、PCの設定がうまく行っていないため、perlは、最低限の条件で動かしています。フォルダ"text"にPerl.exe、Perl300.dllのみ入れてあります。
案の定、下記のスクリプトは、はねられました。
-------myfullpath.pl-------------------------
use Cwd;
$wd = Cwd::getcwd();
$fullpath = "$wd/DATA/$myfilename";
print "$fullpath\n";
---------------------------------------------
C:\text>perl myfullpath.pl
Can't locate Cwd.pm in @INC at myfullpath.pl line 1.
BEGIN failed--compilation aborted at myfullpath.pl line 1.

use Cwdをうまく動かすためには、どのファイルを持ってくればよいでしょうか?
大変、申し訳ないですが、よろしくお願いいたします。

補足日時:2007/01/28 18:16
    • good
    • 0

use Cwd;



私は、標準でインストールされているモジュールを利用しています。

cwd.pm で検索すると、ファイルが見付かりますので、それをスクリプトと同じフォルダに入れれば利用可能かな?(通常はlibフォルダに入れますが、設定されて無いようなので・・・)

試したことは無いので、ちょっと自信ないです。

--------------------------------

require 'getcwd.pl';

こちらの場合は、上記と同様 getcwd.pl で検索すれば、ファイルが見付かるので、それをスクリプトと同じフォルダに入れます。

こちらはこの方法で問題ないと思います。

--------------------------------

$myCurrentDir1=`cd`;
chomp($myCurrentDir1);

この方法もご存知ですよね(前後の質問より)。
これでも良いと思います。

Unix系なら
$myCurrentDir1=`pwd`;
    • good
    • 0
この回答へのお礼

Venzouさん、ありがとうございます。
仕事においては、
$myCurrentDir1=`cd`;
chomp($myCurrentDir1);
この方法にて、進めております。
ディレクトリの操作を理解できたことは、良かったです。
ありがとうございます。

お礼日時:2007/01/30 23:56

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