No.6ベストアンサー
- 回答日時:
#3です。
試していなかったので、ちょっと確認してみました。
ファイルを開くところでディレクトリを指定していなかったのでファイルが開けずに書き込まれない状態になっていたようです。
ですので、ディレクトリの指定を追加してください。
$dir = "A";
open(OUT , "> ex.txt");
opendir(DIR , $dir);
while ($file = readdir(DIR))
{
open(IN , "$dir/$file");
print OUT while (<IN>);
close(IN);
}
closedir(DIR);
close(OUT);
ありがとうございました。これだけ短くてわかり易いコードは
理想的でしかもやりたいことが完全にできました。
ここから更に機能を増やしていきたいと考えています。
またもし質問することがあれば宜しくお願いします。
No.5
- 回答日時:
ANo.4 の補足部分から引用
> 今後のためにも過程を大事にしたいので・・
> 質問の意味もわかりにくかったと思うのでもう一度整理して書きます。
なんとなくはわかるんですが、確認させてください。
以降の引用は QNo.3855079 からの引用
> Aフォルダにaa,bb,ccというテキストファイル
要するにディレクトリ構成はこうなっているのでしょうか?
# ディレクトリ B は余計かもしれないですけど。
./
|--A/
| |-- aa
| |-- bb
| |-- cc
|
|--B/
| |--dd
(以下略)
と、なっているものを A/aa ... B/dd... と全て見つけたいのですか?
これを「工程 1」として
列挙したファイル(aa 、bb 、cc や B/dd)を読み込んで、カレントディレクトリの
ex.txt に列挙したファイルの中身を追記して保存したいということでしょうか?
これを「工程 2」として
「工程 1」を実現する場合は File::Find というものがあります。
使う方法は下記の URL をご覧になってください。
http://katsubemakito.net/cgiperl/2006/10/perl2.h …
# ただし各引数の意味がわかるまでは使わないほうがよろしいと思います。
カレントディレクトリまたは、任意のディレクトリの下層を含めて繰り返して
ファイルの列挙するようなことを「"再帰的"な検索」と言います。
# 余計なことで申し訳ないですが、気になったことを記述させて頂きます。
# 細かいことはスルーすべきなのでしょうけど。
> File::Copy
と、モジュールを使おうとなさっておられたのに……
> while文でやってみましたが、これも引数の指定がわからない状態
これは while 文のひき数がわからないということだったのでしょうか?
ひき数についての調査はご自分でどこまでなされたのでしょうか?
勉強したいという意志をお持ちなら、焦らずにひとつひとつの持つ意味を
理解してプログラミングをされるほうがよろしいのではないでしょうか?
ただコードを貼るのではなくに、ご自身が意図する動作をコメントとして
書いて頂けるとわかりやすくなります。
# 回答者の方々とのやりとりを拝見していると、努力されているのは
# わかりますけど。
また、ご質問のスレッドごとにお使いの環境などを書いていただけると
助かります。
OS や Perl のバージョンによっては使えないモジュールがあるからです。
たとえば、こんな感じで
<Perl>
perl 5.8.8 等
<OS>
linux(Fedora8) や WindowsXP 等
このような情報は、質問する方と回答する方の双方にメリットがあること
だと思いますので、そうなさったらいかがでしょうか?
# くどいことを申し上げたので、どうお感じになられるかは判りませんが、
# 別に意地悪で言っているのではないのです。がんばってください。
この回答への補足
丁寧にありがとうございます。確認事項についてはその通りです。
工程1に関しては、何とかできました。問題は工程2です。
今日も一日かけましたが、できず・・
パールのバージョンはtelnetを使えないので見れませんでした。
Aフォルダを開く
Aフォルダ内のファイルの一覧を取得する
Aフォルダ内のファイルの内容を表示
書き込み用exファイルを開く KS
ファイルの内容が蓄積された配列をexファイルにプリントする
print KS @line;
わかりにくいかもしれません。。 自分でも思いますがこういった手順を本などを見ながら今も模索中です。
再帰的な検索がこうも難しいとは…
No.4
- 回答日時:
これ, 悩むくらいなら system 使った方がはやいんじゃない?
この回答への補足
今後のためにも過程を大事にしたいので・・
質問の意味もわかりにくかったと思うのでもう一度整理して書きます。
◎条件
試作フォルダ内にsisaku.bat sisaku.pl ex.txt Aフォルダがあって Aフォルダ内に aa.txt,bb.txt,cc.txt というテキストファイルが3つあります。 テキストファイルの内容は何でもいいのですが、例えばaa.txt には aaaaaa bb.txt には bbbbbbb
tttttt ggggggg
などと書き込まれている。
★やりたいこと
ex.txt ファイルに Aフォルダ内にある3つのファイル全ての内容を書き込みたい。
ex.txt aaaaaa
tttttt
bbbbbb
gggggg ← のように
今のところ、ファイルを1個ずつ指定すれば書き込めるが、フォルダ内のファイルが例えば1000個に増えたとき、いちいち指定するのは
実用性がないので、何か方法がないかと考えて相談させてもらった次第です。 この説明で伝わったでしょうか?。。
No.3
- 回答日時:
opendir()、readdir() でディレクトリの内容を取得して、ファイルの内容を読み出して書き込んでいくというのでは駄目でしょうか?
open(OUT , "> ex.txt");
opendir(DIR , "A");
while ($file = readdir(DIR))
{
open(IN , $file);
print OUT while (<IN>);
close(IN);
}
closedir(DIR);
close(OUT);
実行していませんがこれで上手くいくでしょうか?インデントは調整してください。
この回答への補足
ソースコードありがとうございます。
実行してみましたが、うまくいきませんでした。
my $dirname = '.';
opendir(DIR, $dirname) or die "$dirname: $!";
while ( my $dir = readdir(DIR)) {
next unless (-f $dir);
next unless ($dir =~ /.\txt$/);
print $dir, "\n";
open(FILE, $dir) or die "$dir: $!";
while (my @line = <FILE>) {
print @line;
}
close(FILE);
}
closedir(DIR);
↑こういうのも試しましたが、最後のファイルの内容しか書き込めません。フォルダ内のファイルの内容を表示させることは何とかできても、
表示した内容を全部書き込めないのが現状です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
batファイルでrenameができませ...
-
FindFirstFileとFindNextFileで...
-
一定時間が経過したフォルダの削除
-
dos変数の%~dp0は powershellで...
-
readdir()で得られるファイル・...
-
ファイル名の変更
-
vba dir の相対パス
-
ExcelをCSV書き出す場合のシー...
-
エクセルVBA コードが同じでも...
-
バッチファイルの作り方(CSV→...
-
openした後、closeしないでプロ...
-
python renameについて
-
VBAでCSVファイルを途中行まで...
-
VBAでCSVファイルの特定行を書...
-
1行がやたら長いテキストをバッ...
-
コンソール出力をテキストに出...
-
CSVファイルの内容を編集する方...
-
close()で例外が投げられる理由
-
Edge スクレイピング
-
system関数と引数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batファイルでrenameができませ...
-
vba dir の相対パス
-
FindFirstFileとFindNextFileで...
-
readdir()で得られるファイル・...
-
ディレクトリ名を取得したい
-
C言語でファイル名を取得
-
dos変数の%~dp0は powershellで...
-
パスから最後のディレクトリだ...
-
Windowsで複数のファイルを同じ...
-
chdirがうまくできない
-
テキストファイルの結合
-
UNIXの"find"コマンド同等のプ...
-
ディレクトリの判別
-
Windows漢字フォルダ名の扱い(...
-
Perlで フォルダ内の全て...
-
makefileでファイルをコピー(...
-
ディレクトリツリーの表示
-
空白を含むディレクトリにある...
-
メールアドレスでメンバー認証
-
複数ファイルの読み込みについて
おすすめ情報