• ベストアンサー

ファイルのデータの半角スペースが削除できない

プログラム(1)--------------------------------------------------- @youbi = ('日', '月', '火', '水', '木', '金', '土'); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $year += 1900; $mon += 1; open(TIME,">ファイル名"); print TIME "${year}\n"; print TIME "${mon}\n"; ---省略--- close(TIME); プログラム(2)--------------------------------------------------- open(TIME,"ファイル名"); flock(TIME,1); @time=<TIME>; close(TIME); ------------------------------------------------------------- 以上のようなプログラムを使い時間を取得したのですが。 printしてみると、「2007 8 24」のように半角スペースが入ってしまいます。chomp();も試してみたのですが、どうにも削除できません。 どうやれば、半角スペースを削除出来るのでしょうか?もしくは、どうやれば半角スペースが入らないように保存、展開できるのでしょうか? 分かり難い質問かとは思いますが、ご返事お願い申し上げます。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

多分 print "@time"; とかやってるんでしょうね。 Perlの配列変数に対する interpolationは 特殊変数 $" の内容をセパレータとして使います。 そしてそのデフォルトの値は ' ' (スペース一個)です。 $LIST_SEPARATOR $" This is like $, except that it applies to array and slice values interpolated into a double-quoted string (or similar interpreted string). Default is a space. (Mnemonic: obvious, I think.) interpolationに頼らないようにするのが一番でしょう。 #!/usr/bin/perl # -*- coding: utf8 -* use strict; use warnings; my @ary = (2007, 8, 24); print "@ary\n"; $" = ':'; print "@ary\n"; $" = ''; print "@ary\n"; print join('', @ary), "\n"; 実行結果: 2007 8 24 2007:8:24 2007824 2007824

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

すみません一つ忘れていました。 ベタに配列の内容を出力するなら print @ary; で十分だったりします。 先の例に付け加えといてください。

回答No.1

書かれているのは保存部分と、保存したデータから配列に読み込んでいるところまでですね。 このスクリプト内では特に問題はありません。 たとえば print "$time[0]$time[1]$time[2]"; とすれば 2007824 と表示されませんか? 表示部分のコードがないので、何が原因か分かりません。

関連するQ&A