- ベストアンサー
外部パラメータを使用したファイルの作成・書き込み
テキストファイルに以下の内容が書かれています。 ファイルパス:/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」となっています。 何か注意する点や、ここが問題では?と言うようなことがあれば教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 自信なしですが、 $filepath = /aaa/bbb/ccc/(←/を付ける) $filename = ファイル.txt 後は、 $○○(←新規変数)= $filepath.$filename; open(TXT, ">> $○○"); 新規の変数はなくてもいいかも知れません・・・。 (^^ゞ
その他の回答 (2)
- spinach-chicken
- ベストアンサー率57% (24/42)
> $filepath!~/\/$/ > ですね? です(^^; 失礼しました。
お礼
ご丁寧にありがとうございますm(__)m
- spinach-chicken
- ベストアンサー率57% (24/42)
テキストファイルを読み込んだ時に、行末に改行など余計な文字が入ってる場合もありますので、確認した方が良いかと。入っていたらchomp等で調整を。 それと、/の追加は if ($filepath=~/\/$/) { $filepath="$filepath/"; } (あってるかな?) のように、「変数の最後に/が無かったら/を足す。」としておくと、より良いと思います。
お礼
ご回答ありがとうございました。 ご指摘どおり、行末に改行が入っていました。。。 また $filepath!~/\/$/ ですね?? ぜひぜひ使いたいと思います。 ありがとうございました。
お礼
ファイルパスの最後に/を付けたらできました。 また新規の変数を作成してもできました♪ ありがとうございますm(__)m