• 締切済み

ログファイルに余計なスペース

以前も同じような質問をして回答をいただいたのですが、 ちょっと状況がかわったので再度質問させていただきます。 以前は print FILE"@log"; とするとスペースが入る、としたところ print FILE @log; とすればOKという回答をいただき、解決していたんですが、 今回は print FILE"$ID<>$COUNT<>$TITLE<>$NAME<>$PASSWORD<>$COLOR<>$NAKAMI<>$TIME<>$SEARCHKEY\n@log_file"; としたいのです。 やはり半角スペースが行頭に入ってしまいます。 これを回避するにはどうしたらいいですか?

みんなの回答

回答No.5

方法は色々。 二回(二行)にわける以外にも print FILE "$line",@log; #普通にカンマでつなぐ print FILE join(""=>"$line",@log); #joinでくくる(区切り文字いれる時便利) また、ブロックの中なら local $"; print FILE "$line@log"; なども。別に変数展開する必要は無いのですが・・ (もしくは、手動で$"='';として後で戻す) ただし、 print FILE "$line" . @log; とやると@logがスカラーコンテキストで判断されるので、要素数が返るかと。 (.の前後の空白は無くてもいいと思います)

  • aton
  • ベストアンサー率47% (160/334)
回答No.4

もう解決したようなので蛇足ですが,#1の回答者の方が言いたかったのは, print "FILE $ID<>$COUNT<>$TITLE<>$NAME<>$PASSWORD<>$COLOR<>$NAKAMI<>$TIME<>$SEARCHKEY\n" . @log_file; としてみてはと言うことだったんじゃないでしょうか。 ちなみに '.' の前後には空白が必要です。要注意。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

その方法でも良いですが 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); でいけると思います。

KODAMAR
質問者

お礼

回答ありがとうございます。 複数回かけるんですね。 知りませんでした。 ありがとうございました。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

2回に分けて出力してみて下さい。 print FILE"$ID<>$COUNT<>$TITLE<>$NAME<>$PASSWORD<>$COLOR<>$NAKAMI<>$TIME<>$SEARCHKEY\n"; と print FILE @log_file; です。

KODAMAR
質問者

お礼

回答ありがとうございます。 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)
回答No.1

print $hoge . @log_file; とか?

KODAMAR
質問者

お礼

print FILE $ID<>$COUNT<>$TITLE<>$NAME<>$PASSWORD<>$COLOR<>$NAKAMI<>$TIME<>$SEARCHKEY\n.@log_file; としてみましたがエラーになってしまいました。

関連するQ&A