• ベストアンサー

Perl の 質問です

Perlで質問です。 1 while $all_total = ~ s/(.*\\d)(\\d\\d\\d)/$1,$2/g; という文があるのですが、説明を見るとカンマを3桁ごとに入れるとなっておりました。なぜか一番最初の 1 が私にとって違和感があります。 どういういみなのでしょうか。

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

  • ベストアンサー
  • kabaokaba
  • ベストアンサー率51% (724/1416)
回答No.1

とりあえず・・・タイトルにはまともなものをつけること. Perlのカテゴリなんだから,Perlの話なのは当たり前. つぎに・・・まともに処理できるソースコードをだすこと > 1 while $all_total = ~ s/(.*\\d)(\\d\\d\\d)/$1,$2/g; たった一行で二箇所(数え方によっては四箇所)も間違えてる・・・ 正規表現に不要なエスケープがあることから想像して もしかして,これは何かの「文字列」の中の一部? #もういっこ,本質的に同じ質問があるのは。。。なぜだろ? 本題・・・while構文には 実行の部分が必要なんだけども, 今回の場合は whileの条件節が「置換が成功したかどうか」ということで 同時に置換も行っているので 実行するものが存在しない. しかし,それでは構文的に困るので 何も実行しないというか,常に「成功する」1をつけることで これを「何もしない実行部分」としているということ {} while ($all_total =~ s/(.*\d)(\d\d\d)/$1,$2/g); こうしても動くけど,こういう場合は習慣的に 1 を 使うことが多いよう.moduleなんかもで 最後に 1 をつけて「成功」を返すようになっている.

abesouri
質問者

お礼

有難うございます。 投稿の際に指が痙攣して連続して2度ボタンを押してしまいました。 ですので同じ質問が2つ登録されました。(削除もできません。) それからなぜか\マークが自動的に多く付きました。 原因不明です。

abesouri
質問者

補足

有難うございます。 投稿の際に指が痙攣して連続して2度ボタンを押してしまいました。 ですので同じ質問が2つ登録されました。(削除もできません。) それからなぜか\マークが自動的に多く付きました。 原因不明です。

関連するQ&A

専門家に質問してみよう