[perlメモ]変数と文字の区切り

perl使いなら一度は悩んだ事があると思われる問題。回避方法は色々あるので適当にかわしてましたけどスマートな方法があるはずと探してみたら下記のサイト様で発見しました。

◇参考:変数展開時の変数名と文字列の区切り – 変数 – Perl入門

もしかすると知らなかった方がすごくはずかしいのかも知れない。( ̄口 ̄;

ちょっと詳しく書いてみると

たとえば下の様なコードを書いたとします。URLを表示するだけのプログラムです。

#
#    test04.pl
#

use strict;
use warnings;

my $url = ‘http://blog.kumacchi.com/’;

print "$url\n";

 

実行してみると

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

Z:\tmp>perl test04.pl
http://blog.kumacchi.com/

Z:\tmp>

となります。

そして、たとえばここから

http://blog.kumacchi.com/hsp

のURLを生成したいします。

その場合、下の様には書けないわけです。$urlhspという一つの変数になってしまうので、そうならないように文字と変数を区切りたいわけです。

#
#    test04.pl
#

use strict;
use warnings;

my $url = ‘http://blog.kumacchi.com/’;

print "$urlhsp\n";

 

そこで苦肉の策として、下の様にしてみたり

#
#    test04.pl
#

use strict;
use warnings;

my $url = ‘http://blog.kumacchi.com’;

print "$url/hsp\n";

でもこれだと、逆にhttp://blog.kumacchi.com/とするときには

print “$url/\n”;

となんだか間抜けな表記になってしまい嫌な感じですw。

 

または、下の様にしてみたりとか、するわけです。

#
#    test04.pl
#

use strict;
use warnings;

my $url = ‘http://blog.kumacchi.com/’;

print "$url"."hsp\n";

 

まあ、これでもいいんですが、かなりスマートじゃないです。

で、スマートな方法が下です。変数を$urlではなく${url}と{}で囲ってあげるのがみそです。これで変数と文字を明確に区切る事ができるようになるわけです。これでだと変数の取り回しもスマートで扱いやすくなります。

#
#    test04.pl
#

use strict;
use warnings;

my $url = ‘http://blog.kumacchi.com/’;

print "${url}hsp\n";

 

 

タグ : ,