• ベストアンサー

「1 while ...」ってなに?

webの裏技というサイトからショッピングカートのサンプルスクリプトを 入手して解読しようとしたら、 1 while $goukei=~s/(.*\d)(\d\d\d)/$1,$2/g; というのがありました。 桁カンマを入れる処理らしく、 $goukei以下は正規表現で置き換えをしているのが なんとなくわかるのですが 1 whileの意味がよくわかりません。 なくてもいいと思うのですが・・・。 教えてください。

  • CGI
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • bero
  • ベストアンサー率40% (2/5)
回答No.1

1 while $goukei=~s/(.*\d)(\d\d\d)/$1,$2/g;は、 わかりやすく書くと while($goukei=~s/(.*\d)(\d\d\d)/$1,$2/){1;} となる。ちなみに、1はダミーなのであまり意味はないです。 しかし、裏技の修飾子gはいらないと思う。 三桁区切りについては参考URLを見てください。

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm
harisun
質問者

お礼

ありがとうございます。 ほぼ納得できました。 URLも参考にさせてもらいます。

関連するQ&A

  • http:の書き込みを変換

    やりたい事は掲示板などでユーザーの書き込みで貼られたリンクをリンク文字に置き換えをしたく奮闘中です。ですが正規表現がどうも上手く理解できずにいます。ここ教えて!gooでもURLを書き込むと自動的にリンクに書き換えられますが、それと同じ事がしたいのです。 とりあえず正規表現の理解には時間がかかってしまいそうなので、正しい理解は後回しにして、リンクに書き換えるための正規表現等のよいサンプルがあるページのご紹介やコードを書き込みをいただきたくおもいます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • Perl の 質問です

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

    • ベストアンサー
    • Perl
  • 正規表現の勉強方法

    少し前のトピックの数値かどうかを判別するパターンマッチングの表現に /^-?\d+\.?\d*$/ とあるかと思います。私なりにどうやったらこの正規表現が解読できるか、やってみているのですが、私の本(独習PERL)で正規表現の部分を調べると\dに関しては[0-9]と同じと出ているのですが、その他の文字(^-?、+\.?、*$)などについては載っておらず、どこで切るのかさえわかりません。 皆さんはどんな本を使って調べているのでしょうか? また、私の調べ方が悪いのでしょうか? (たとえば、-だけ調べるとマイナスと出てきちゃいますが、この場合は違い増すよねぇ?) アドバイスお待ちしています。

    • ベストアンサー
    • Perl
  • 正規表現でカンマを対象にする方法

    フォームから入力された値をCSVにはき出しているため、 「,」(カンマ)を禁止文字としたいのですが、 正規表現で対象にすることは可能でしょうか? 「.」(ピリオド)なら  if($TEST1 =~ /\./) とすればよいと思うのですが、、、  if($TEST1 =~ /\,/) ではダメですよね。 正規表現で引っかけてアラートを出す予定なのですが、 if($TEST1 =~ /\,/){ print <<END; <script> alert(",(カンマ)を含んでいます"); </script> END &error; } 他のやり方で「,」(カンマ)を禁止文字にする方法でも構いません。 また、入力フォームは8つあるのですが($TEST1~$TEST8)、 まとめて「,」(カンマ)を禁止文字にすることはできますか? 開発環境:WindowsXP(TeraTerm使用) サーバー:HP-UX perlバージョン:5.6.1 以上、よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 正規表現

    正規表現で身長、体重の入力チェックをしたいのですが、 うまくいきません。 ↓がんばったのですが。。 /^\d\d\d?\.?\d*$/ 整数部3桁まで、小数部はDBで1桁に丸めるので何桁でもOKです。 どなたかアドバイスをお願いします。

  • CSVからのデータの取り出し

    困ってしまいました。助けてください。 CSVからデータを取りだす事が出来たのですが、 データに値段が入っているため、カンマ切りで失敗してしまいます。 FNAME,LNAME,"12,400",0,0,0,"2,400","3,800" 料金が三ケタ目にカンマを打つので、それで、 split(/,/, $data); でデータを分裂させるとおかしくなってしまいます。 正規表現でヒットさせて置換などを使いたいのですが、分からず。 データ自体をいじるのはNGです。 ""の間の,が取れれば良いのですが。 値段表示に,はいりません。取ってしまいたいのですが。 助けてください。

    • ベストアンサー
    • Perl
  • Excel2007で正規表現置き換え

    Excel2007で正規表現を利用して文字列を置き換えしたいと考えています。 Office2003系列のExcelではそういうアドインがあったようです。 (使ったことはないので、どのバージョンまで使えるとかは知らないですが) http://srcedit.pekori.jp/tool/excelre.html 上記のアドインはExcel2007でも使えるのでしょうか? また使えないのでしたら、それに変わるような2007用のアドインがあるのでしょうか? 置き換えしたいデータは以下のようなものです。 1.日付が数字8桁で”文字列として認識されて”入力されている。   例)20080430 2.それを”/”で区切って日付の形式にしたい。   例)2008/04/30 現在は以下のような方法で同じ事を行っています。 A.8桁で入っている列をすべて選択し、形式を数値に変え、コピーしメモ帳に貼り付けます。 B.メモ帳からExcelの同じ選択している列にそのまま貼り付けます。これで数値として認識されます。 C.今度は表示形式を「####"/"##"/"##」とし、数値をスラッシュで区切ります。 D.それをさらにコピーし、メモ帳に貼り付けます。スラッシュ付きの数字として張り付きます。 E.それをコピーし、同じ選択している列に貼り付けます。 F.数値形式のところにスラッシュ区切りのデータを入力したので形式を日付に変更します。 というようなことをしています。 これでもできるのですが、これ以外にも色々と正規表現を利用して置き換えしたいことが出てきた場合はそちらを利用したいので、もしあればお願いします。

  • 正規表現のm{}

    正規表現の記述で、m{}と書くサンプルを目にしたのですが、このmと中括弧は何を意味するのでしょうか? 以下、Hタグにマッチするかをテストする正規表現のサンプルです。 $_ = "<H3>ヘッダ3</H3>"; if ( m{<(H\d)>(.+)</\1>} ) { print "found!!"; }

    • ベストアンサー
    • Perl
  • 正規表現が読めない

    諸般の事情でperlスクリプトに手を入れることになりました。 perlについてはまったくの素人であることに加えて、正規表現が読めません。お恥ずかしいのですが、下記を読み下していただけないでしょうか。 (変数のリスト) = map{/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); $tmpはカンマ区切りのテキストです。

    • ベストアンサー
    • Perl
  • 3桁区切り

    ドリームウィーバーで下記のJAVAスクリプトを挿入ました。 <!-- a = 10000; // b = 5000; //   d = a + b; // document.writeln(d); // // --> dの値を,(カンマ)で3桁区切りにする場合どのようにすればよいのでしょうか? 丸一日調べても、フォームを使用した物の記述しか見つからずに 困っています。

専門家に質問してみよう