• ベストアンサー

パールで「$:」は何を意味するのですか??

パールプログラムの先頭に次の行がありました。 $: = " "; これはいったい何をやっているのでしょうか。 $:という変数へ1文字分の空白文字を代入しているというのは分かるのですが・・・ ちなみにパール起動直後にこの変数の内容を表示させてみたら_(下線)でした・・・。 パールではこの$:という変数は何に使用されているのですか。

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

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

アンダースコア(下線)じゃなくてマイナス記号(ハイフン)ではないですか? $: The current set of characters after which a string may be broken to fill continuation fields (starting with ^) in a format. Default is " \n-", to break on whitespace or hyphens. (Mnemonic: a "colon" in poetry is a part of a line.) ということなので、問題のスクリプト(プログラム)で format と writeを使っていませんか?

zyousuke
質問者

お礼

sakusaker7さん、ご返信ありがとうございます。 ご想像のとおりアンダースコアじゃなくてマイナス記号でしたw 正式には空白文字、改行文字、マイナス記号なのですね。 理解するのに時間がかかりましたが、フォーマットの解説サイトを読みつつ、いろいろ実行したところ $:の役割が分かりました。 これはフォーマット変数の一種で この変数に代入した文字列のうち、どれか1文字を出力後、改行しごろなら改行するというものだと思います。 たとえば $: = "b"; $str = "abaabaaabaaaabaaaaabaaaaaabaaaaaaa"; write; format = ^<<<<<<<<<<~~ $str . このコードを実行すると abaabaaab aaaabaaaaab aaaaaab aaaaaaa と出力します。 bを出力しても、改行しごろでない場合は改行しないというのがミソですね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • perlの内容なのですがこれで合っていますでしょうか?

    print 関数は文字列や数値だけでなく、変数を指定してその値を表示することもできます。 $a=1; 1を$aに代入する。 print $a; 変数$aの値を表示させる。 $a=2; 変数$aに2を代入する。 $b=3; 変数$bに3を代入する。 print "変数\$aに変数\$bを代入\n"; 「変数$aに変数$bを代入」という文字を表示させて改行する。 $a=$b; 変数$bの値を変数$aに代入する。 print "\$a="; 「$a=」を表示させる。 print $a; 変数$aの値を表示させる。 print ",\$b="; 「,$b=」を表示させる。 print $b; 変数$bの値を表示させる。 print "\n"; 改行を表示させる。 実行結果は↓↓↓↓↓↓↓ 変数$aに変数$bを代入 $a=3,$b=3 変数の書き方 文は ; で区切るが、1行に並べることも可能。 $a=2; $b=3; ↓ $a=2; $b=3; 複数の変数に、同時に値を代入することも可能。 $a=2; $b=2; ↓ $a=$b=2;

    • ベストアンサー
    • Perl
  • Perl あっていますでしょうか?

    " " と ' ' の相違は? ""の内にある変数名は、その値に変換されます。 ''の内にあるものは、そのまま文字列として扱われます。 エスケープシーケンスは "" の内に記述した場合のみです。 $a="Hello"; 文字列Helloを変数$aに代入する。 $b="$a"; 変数$aを変数$bに代入する。 $c='$a'; $aという文字列を変数$cに代入する。 ""の内で""を使うことは出来ません。 ''の内で''も使うことは出来ません。 使うときはエスケープシーケンスを使います。 print "\"Hello\"\n"; 文字列"Hello"を表示させます。 print "'Hello'"; 'Hello'を表示させます。 ""の内で''又は''の内で""を使うことは出来ます。 $a="あいうえお"; 文字列 あいうえお を変数$aに代入する。 print "\n$a\n"; 改行して あいうえお表示して 改行する。 print '\n$a'; 文字列\n$aを表示する。 文字列の結合 . (ピリオド)を使って前後の文字列を連結することが可能です。 $a="Hello"." "."World"; 変数$aに文字列Helloと半角スペースとWorldをつないだものを代入します。 $a="c"x3; 変数$aに文字cを3回つないだものを代入します。 $a="A"; 文字Aを変数$aに代入する。 $b="B"; 文字Bを変数$bに代入する。 $c="C"; 文字Cを変数$cに代入する。 print $a.$bx3.$c; 文字Aと文字Bを3回結合したものと文字Cを表示する。 画面にはabbbcと表示されます。

    • ベストアンサー
    • Perl
  • Perlで変数に代入された文字の置き換えを行いたい

    Perlで、変数Aに代入された文字を変換し、変数Bに代入するプログラムを作りたいと思っています。 具体的には、「北海道」が変数Aに代入されると、「hokkaido」を変数Bに代入するというものです。 これを47都道府県全体でやりたいと思っています。 プログラムの都合上、 北海道 → 変数A → hokkaido → 変数B という流れで変換する必要があります。 具体的なソースを何卒ご教示いただければ幸いです。 お手数をお掛けいたしますが、アドバイスのほど、よろしくお願い致します。

    • ベストアンサー
    • Perl
  • 20100228000000+0900 ⇒ 2010.02.28

    perlで 変数$aに代入されている"20100228000000+0900"という文字を ($a=20100228000000+0900) 変数$bに"2010.02.28"と変換させて代入するには どのようにすればよいのでしょうか。 お忙しいところ恐れ入りますが,ご教授ください。

    • ベストアンサー
    • Perl
  • Perlです。サブルーチンについて

    以下の文はあっていますでしょうか。 # サブルーチンを呼び出して引数は 3 とする。 # そして返ってきた戻り値を変数$aに代入せよ。 $a=&a(3); # サブルーチン名aせよ。 sub a{ # $_[0]が引数 3 となりプラス1して変数$bに代入せよ。 $b=$_[0]+1; # 変数$bの内容を戻り値として返せ。 return $b; } # 変数$aの内容を表示せよ。 print "$a";

    • ベストアンサー
    • Perl
  • Perlでの複数行の切り抜きに関して

    perlを使用して指定した先頭文字がヒットした行から 別に指定した先頭文字がヒットする一行前までを 切り出したいと思っています。 [例] 【変換前】 aa bb cc dd ab bc cd de ac bd de ef ad bd de ef ad bc cd ef ae bc cd df 【変換後】 ab bc cd de ac bd de ef 変換内容は上記の例ですと先頭文字がabから始まる行から 先頭文字がadで始まる行の1行前までを抜き出したいと思っています。 この場合どのようにPerlで記述をしてあげればよいか教えて頂けないでしょうか。 よろしくお願いいたします。

  • Perlインクリメントデクリメント

    あっていますでしょうか? インクリメント演算子とデクリメント演算子 インクリメント(加算)演算子は変数の数値を一つ増やす。 デクリメント(減算)演算子は変数の数値を一つ減らす。 ++ インクリメント演算子 変数の値を1増やす $a++ ++$a $aの値を1増やす -- デクリメント演算子 変数の値を1減らす $a-- --$a $aの値を1減らす $a=1; 変数$aに1を代入する print "はじめは$aでした。\n"; $aの代わりに1が入り はじめは1でした。と表示する。 $a++; $aに1を足す。 print "1増えて$aになりました。\n"; $aの代わりに2が入り、1増えて2になりました。 と表示する。 $a--; $aから1減らす。 print "1減って$aに戻りました。\n"; $aの代わりに1を入れて 1減って1に戻りました。 と表示する ↓ 実行結果 ↓ はじめは1でした。 1増えて2になりました。 1減って1に戻りました。 $a++ と ++$a の違い インクリメント演算子、デクリメント演算子には2通りの書き方があります。 ++$a(前置)と$a++(後置) --$a(前置)と$a--(後置) 前置の場合は変数の参照より先に演算が行われます。 後置の場合は変数の参照より後に演算が行われます。 $x=$a=1; 変数$xと$aに1を代入する。 $x=++$a; $aに1を足した後に$xに代入する。$xの値は2になる。 $x=$a=1; 変数$xと$aに1を代入する。 $x=$a++; 変数$aの値を$xに代入した後に$aに1を足す。$xの値は1。 文字もインクリメント出来ます。 $x="A"; "A"を$xに代入する。 $x=++$x; Aから一つ増やしてBにして$xに代入する。 $x="aaa"; "aaa"を$xに代入する。 "aaa"を一つ増やして"aab"を$xに代入する。 ただし、文字のデクリメントはできません。

    • ベストアンサー
    • Perl
  • javascriptの変数とperlの変数で計算

    初めて質問させていただきます。 javascript計算で困っています n[0] -=$y_p[1][0]; のperlの変数$y_p[1][0]にjavascriptの変数xを代入して計算しようと試みました。 n[0] -= $y_p[x][0]; しかしこれでは上手くいかないようです。 こんな感じのことは出来ないのでしょうか。 よろしくお願いします。

  • 3桁コードの先頭文字を取り出す

    お世話になります。 Perlは最近はじめました。ご教授宜しくお願いします。 さて、コード番号が101、102・・・201、202・・・801、802の様にあってリクエストフォームから送信されてきます。これを一旦変数に代入した後、102だったら、先頭の1を、801だったら先頭の8を取り出して、ifで分岐させたいのですが、ExcelなんかでのLeft関数の様に、左から○文字を取り出す・・・という処理はPerlではどうすればよいのでしょうか?

    • ベストアンサー
    • Perl
  • perlの文字列操作について教えてください

    perl初心者です。 変数$hogeに下記のような値が入っていた場合に、 ttp://***の部分を1つずつ取り出して、配列に 代入する方法を教えてくださいm(_ _)m $hoge = ttp://aaaa ttp://bbb ttp://ccc