• ベストアンサー

外部パラメータを使用したファイルの作成・書き込み

テキストファイルに以下の内容が書かれています。 ファイルパス:/aaa/bbb/ccc ファイル名:ファイル.txt これを読み込んで $filepath = /aaa/bbb/ccc $filename = ファイル.txt となっています。 この時(「ファイル.txt」は存在しません。)、以下のような処理を行うと「/aaa/bbb/ccc」ではなく、「/aaa/bbb」に「ファイル.txt」が作成されるのですが、なぜでしょうか?? open(TXT, ">> $filepath/$filename"); flock(TXT, 2); print TXT $header; flock(TXT, 8); close(TXT); この処理の前に$filepathの値を調べましたが、確かに「/aaa/bbb/ccc」となっています。 何か注意する点や、ここが問題では?と言うようなことがあれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちは。 自信なしですが、 $filepath = /aaa/bbb/ccc/(←/を付ける) $filename = ファイル.txt 後は、 $○○(←新規変数)= $filepath.$filename; open(TXT, ">> $○○"); 新規の変数はなくてもいいかも知れません・・・。 (^^ゞ

love_sen
質問者

お礼

ファイルパスの最後に/を付けたらできました。 また新規の変数を作成してもできました♪ ありがとうございますm(__)m

その他の回答 (2)

回答No.3

> $filepath!~/\/$/ > ですね? です(^^; 失礼しました。

love_sen
質問者

お礼

ご丁寧にありがとうございますm(__)m

回答No.2

テキストファイルを読み込んだ時に、行末に改行など余計な文字が入ってる場合もありますので、確認した方が良いかと。入っていたらchomp等で調整を。 それと、/の追加は if ($filepath=~/\/$/) { $filepath="$filepath/"; } (あってるかな?) のように、「変数の最後に/が無かったら/を足す。」としておくと、より良いと思います。

love_sen
質問者

お礼

ご回答ありがとうございました。 ご指摘どおり、行末に改行が入っていました。。。 また $filepath!~/\/$/ ですね?? ぜひぜひ使いたいと思います。 ありがとうございました。

関連するQ&A