- 締切済み
ログファイルに余計なスペース
以前も同じような質問をして回答をいただいたのですが、 ちょっと状況がかわったので再度質問させていただきます。 以前は print FILE"@log"; とするとスペースが入る、としたところ print FILE @log; とすればOKという回答をいただき、解決していたんですが、 今回は print FILE"$ID<>$COUNT<>$TITLE<>$NAME<>$PASSWORD<>$COLOR<>$NAKAMI<>$TIME<>$SEARCHKEY\n@log_file"; としたいのです。 やはり半角スペースが行頭に入ってしまいます。 これを回避するにはどうしたらいいですか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- natsuki_tk
- ベストアンサー率35% (99/279)
方法は色々。 二回(二行)にわける以外にも print FILE "$line",@log; #普通にカンマでつなぐ print FILE join(""=>"$line",@log); #joinでくくる(区切り文字いれる時便利) また、ブロックの中なら local $"; print FILE "$line@log"; なども。別に変数展開する必要は無いのですが・・ (もしくは、手動で$"='';として後で戻す) ただし、 print FILE "$line" . @log; とやると@logがスカラーコンテキストで判断されるので、要素数が返るかと。 (.の前後の空白は無くてもいいと思います)
- aton
- ベストアンサー率47% (160/334)
もう解決したようなので蛇足ですが,#1の回答者の方が言いたかったのは, print "FILE $ID<>$COUNT<>$TITLE<>$NAME<>$PASSWORD<>$COLOR<>$NAKAMI<>$TIME<>$SEARCHKEY\n" . @log_file; としてみてはと言うことだったんじゃないでしょうか。 ちなみに '.' の前後には空白が必要です。要注意。
- tatsu99
- ベストアンサー率52% (391/751)
その方法でも良いですが open closeまで2回に分ける必要はありません。 open(FILE,">log.log"); @log_file2 = <FILE>; #ここの意味が不明ですが・・・ print FILE "$ID<>$COUNT<>$TITLE<>$NAME<>$PASSWORD<>$COLOR<>$NAKAMI<>$TIME<>$SEARCHKEY\n"; print FILE @log_file; close(FILE); でいけると思います。
- tatsu99
- ベストアンサー率52% (391/751)
2回に分けて出力してみて下さい。 print FILE"$ID<>$COUNT<>$TITLE<>$NAME<>$PASSWORD<>$COLOR<>$NAKAMI<>$TIME<>$SEARCHKEY\n"; と print FILE @log_file; です。
お礼
回答ありがとうございます。 open(FILE,">log.log"); @log_file2 = <FILE>; print FILE "$ID<>$COUNT<>$TITLE<>$NAME<>$PASSWORD<>$COLOR<>$NAKAMI<>$TIME<>$SEARCHKEY\n"; close(FILE); open(FILE,">>log.log"); print FILE @log_file; close(FILE); と2回にわけてみました。 無事できました。 これでいいんですよね?
- the845t
- ベストアンサー率33% (246/743)
print $hoge . @log_file; とか?
お礼
print FILE $ID<>$COUNT<>$TITLE<>$NAME<>$PASSWORD<>$COLOR<>$NAKAMI<>$TIME<>$SEARCHKEY\n.@log_file; としてみましたがエラーになってしまいました。
お礼
回答ありがとうございます。 複数回かけるんですね。 知りませんでした。 ありがとうございました。