キッズプレート、パスタおかわり

プログラミングやデジモノについてあれこれ
--.--.-- --:--|カテゴリ:スポンサー広告| コメント(-)

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2007.02.15 13:03|カテゴリ:Perlコメント(2)

Perlで変数名と文字列を明示的に分ける方法


 先日会社の人に、

Perlで文字列と変数名を明示的に分けて表記するにはどうするの?」

 みたいなことを聞かれたので軽くメモ。知ってるようで知らないってのが、いろんなジャンルにはあるけどもこの話しもその類の話みたい。
 Perlなんかの参考書では最初の方のページにちょろっと書かれているだけだったりし一度見落とすと再度みる可能性が低いというのが主な理由なんでしょうな。

 例えばこんな時、

$Atai_a = 'Hira';
$Atai_b = 'kun';
print "$Atai_a$Atai_b\n";

 こうすると結果は、

「Hirakun」

 になる。さてでは「kun」の部分を変数に入れるのではなく直接print文に記入するとどうだろう。

$Atai_a = 'Hira';
print "$Atai_akun\n";

 まあ至極簡単なので想像できますがprint文の中で使用されている変数名が「$Atai_akun」になってしまうので「Hirakun」なんていう結果はでてきません。
 このように$Atai_akunとプログラム上に書いてしますと当然変数と文字列の堺が無くなってしまいます。

「$Atai_aという変数とkunという文字を並べているんだよ」

 ということを明確に表すにはどうすればいいのでしょうか。それには「{}」を使います。次がその例です。

$Atai_a = 'Hira';
print "${Atai_a}kun\n";

 このように変数名の部分を「{}」で囲むことにより明示的に変数名の範囲を指定することができます。この書き方はPerlに限らず他の言語でも似たりよったりなので、

「変数名を明示的に示したい時はどうすればいいのか?」

 ということは最初に押さえておきたいポイントの一つですな。まあこれ、知ってる人にとっては何を偉そうに長々と、と思える内容なのですが知らないと本当に悩むんですよね。まあこんな「{}」を使わずとも文字連結子である「.」ピリオドを使えば解決できる問題ですが。

$Atai_a = 'Hira';
print $Atai_a . 'kun' . "\n";

 好みの問題ですかねえ。私の場合は根が怠け者なのでダブルクォートで全部囲ってしまうのがくせになってます。ですので「{}」はかなり重要なんですよね。そうそう文字連結の話題で思い出したのですがある変数に文字列を追加したい時ってありますよね? Perlでは数字のカウントなどで、

$a++;

ような書き方がありますが、これ文字にも似たようなものがありまして、

$Name = 'ひら';
$Name = $Name . 'くん';

 のような物を、

$Name = 'ひら';
$Name .= 'くん';

なんて感じで「.=」を使って記述できます。この記述を「わかりやすい」と感じるか「わかりにくい」と感じるかは人それぞれですが、最近覚えたのでついつい使ってしまんですよ。本当は誰がみてもわかるような表現で書くべきなんだろうなあ。それが一番の悩みどころですかね
( ̄▽ ̄;
Perlのソースってぱっと見、文字化けのような記述で、いつもゲンナリしながらひらくんにお世話になっておりまする....
いゃ、修行が足らないだけですね、小生。
[ 2007/02/15 22:40 ] [ 編集 ]
お互い
>ばらさん
いやいやこちらこそ。でもまあいったんPerlを離れるとあっというまに忘れてしまいますよねえ。私はここ数日、一日十数時間Perl漬けで辟易中でございます( ̄Д ̄;
[ 2007/02/17 16:42 ] [ 編集 ]
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

プロフィール

ひらくん Author:ひらくん
どもども、ひらんくんどす。
日々まったり過ごしております。
仕事はDTP関連のスプリクト&アプリケーション開発。
Follow happyscript on Twitter

ブログ内検索



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。