プロが教えるわが家の防犯対策術!

#通常休診設定
$hdayfl = "./datas/hday7.txt";open (DT,"<$hdayfl");$hday = <DT>;close (DT);


#重要休診日
#$regular = "./datas/regular.txt";open (DT,"<$regular");$hday = <DT>;close (DT);


@HOLIDAY = split(/\,/,$hday);$SHOWHOLIDAY = "";@TPHOL = ();
foreach $p (@HOLIDAY){if(index($p,"-") > 0){push(@TPHOL,"\"$p\"");}}
$SHOWHOLIDAY = join(",",@TPHOL);


というプログラムで現在重要休診日をコメントアウトしてるのですが、それは通常休診日と、重要休診日の二つのファイルを同時に読み込ませたいのですが、このままコメントアウトを外すと、/datas/regular.txt" のファイルしか読み込まれなくなり、通常休診日ファイルが読み込まれなくなります

同時に、二つのファイル(通常・重要ともに)をオープンさせて読み込ませるには、何が足りないのでしょうか?

ご教示くださいませ。

A 回答 (5件)

以下のようにしてください。


------------------------------
#通常休診設定
$hdayfl = "./datas/hday7.txt";open (DT,"<$hdayfl");$hday1 = <DT>;close (DT); #$hdayを$hday1に変更する


#重要休診日
$regular = "./datas/regular.txt";open (DT,"<$regular");$hday2 = <DT>;close (DT); #$hdayを$hday2に変更する

$hday = $hday1 . ',' . $hday2; #・・・この行を追加

以降は変更無し
------------------------------
質問ですが
11-28とは11月28日という意味でしょうか?
もし、そうだとすると、通常休診日と重要休診日とで日付が重複することはないのでしょうか。
(例えば、12-13がどちらのファイルにも入っている場合です。)
その場合、12-13が重複するので、片方を、取り除く必要があると思いますが、
それは行わなくても良いのでしょうか。そもそも、日付の重複は発生しないのであれば、
このことは、問題になりません。
もし、日付の重複があって、それを取り除く場合は、更にスクリプトを変更する必要があります。

この回答への補足

>11-28とは11月28日という意味でしょうか?

そうです仰る通りです。

>通常休診日と重要休診日とで日付が重複することはないのでしょうか。

これにつきましては、今までも、11-28,11-28,11-30,,,,,

となっても、問題なかったので、今回ファイルが分かれても大丈夫だと思います。ご心配頂き感謝いたします。

本当ご丁寧に有難うございます!!

補足日時:2013/12/17 16:38
    • good
    • 0
この回答へのお礼

出来ました!! 二つの内容が読み込まれてるのを確認した時のあの時の感動、どうお伝えすればいいのか~

感謝に堪えません!!

しかし、ここにいらっしゃる住人様は流石としか言えません。

今後このQ&Aが他の方にもお役に立てばと思います

ありがとうございました!!

お礼日時:2013/12/17 16:40

perl ファイルの結合


とか
perl ファイルの連結
とかで
ググればいいと思うわ
    • good
    • 0
この回答へのお礼

再度細かくご教示くださりありがとうございました。
感謝いたします

お礼日時:2013/12/17 16:35

足し算するのが一番簡単かも?

この回答への補足

足し算ですか。。。。 具体的どのように書けばよろしいのでしょうか? 教えて頂けませんでしょうか~

補足日時:2013/12/16 23:50
    • good
    • 0

> /datas/regular.txt" のファイルしか読み込まれなくなり、通常休診日ファイルが読み込まれなくなります



読み込まれないのではなく

$hdayfl = "./datas/hday7.txt";open (DT,"<$hdayfl");$hday = <DT>;close (DT);
で読んだ $hday を
$regular = "./datas/regular.txt";open (DT,"<$regular");$hday = <DT>;close (DT);
で上書きしてしまっているのです。

対策は、上書きしないようにすることです。

ここに書かれている内容では、どんなデータが入っていて、それをどうしたい、と言った仕様が不明なので
具体的な方法はお答えできません。

この回答への補足

お二方様ありがとうございます。

まずデータは11-28,11-30,12-13,12-15,12-1,11-25,12-24,12-29,12-30,12-31,1-1,1-2,1-3,12-15,12-8,12-10

のようにカンマ区切りでtxtに格納されています

この例えば11-28はお休みにしたいっていうのが狙いです

しかしこれは変動的なお休み設定で、重要休診日は、1年間を一度設定したら、基本もう触らない休日設定としたいのです。


そしてこのファイルを読み込んだとき、両方のtxtを読み込んで
どちらも有効にさせたいというのが狙いです。


もし説明不足、ピント外れでしたら、ご指摘くださいませ。

補足日時:2013/12/16 23:12
    • good
    • 0

#重要休診日



$hday = <DT>;

#通常休診設定

$hday
を上書きしてしまっているからよ
それだけのことね

この回答への補足

$変数を適当なものに変えればいいってことでしょうか?

補足日時:2013/12/16 23:13
    • good
    • 0

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