許せない心理テスト

perlでCGIを勉強していたらprint qq!!;という文がでてきました。qqは調べたらダブルコーテーションだと書いてありましたが、「!」はどういう意味をなしているのですか?はずかしながら今日はじめてqq!!をみたのですが、これはperlでは一般的な書き方なのでしょうか?
そちらもあわせて教えてくだされば幸いです。

よろしくお願いします。

A 回答 (4件)

> qqは調べたらダブルコーテーションだと書いてありましたが



qqがそのままダブルクォーテーションを意味するわけではなく、「引用の一般化表記」というやつです。
ダブルクォーテーションで囲むのと同じ結果になる、別の書き方です。

なぜそんなものがあるのか、普通にダブルクォーテーションで囲めば良いのでは?
と思うかもしれませんが、たとえば、

<a href="$url" target="_blank"><img src="$button_img" alt="Link" border="0"></a>
なんていうデータを変数に代入したい場合、大変面倒ですよね。

$anc = "<a href=\"$url\" target=\"_blank\"><img src=\"$button_img\" alt=\"Link\" border=\"0\"></a>";

いちいちこう書くよりも、

$anc = qq!<a href="$url" target="_blank"><img src="$button_img" alt="Link" border="0"></a>!;

と書いた方が楽ですし見やすいです。

ちなみに、囲み文字に「 ! 」を指定してありますが、個人的にちょっと見にくいような気がします。一般的に
qq|~|
qq/~/
が多いのではないでしょうか。

また、qq以外にも、

q|~|
qx|~|
qw|~|

があります。
それぞれの意味はご自分で調べられたほうが理解が深まるかと思います。
    • good
    • 0

参考URLの


Quote and Quote-like Operators
以下を参照してみてください。

参考URL:http://perldoc.jp/docs/perl/5.6.1/perlop.pod
    • good
    • 0

 追記。


 #1です。
 下記に qq に続く文字は半角記号であれば何でもいいと書きましたが、カッコの類の場合は扱いが変わるようです。

print qq[abc[;
print qq(abc(;

 こんなこともできるのかと思ったら、カッコ記号の場合は、

print qq[abc];
print qq(abc);

 こういうふうに囲まないと駄目みたいです。
(言ってる意味が分からなかったら無視して構いません(^_^; 文字列を扱うのに qq コマンドを使うことは滅多にありませんから)
    • good
    • 0

 qqは、それに続く文字を「囲み記号」として扱うことを表す文字列表記コマンドです。


 たとえば、qq!! の場合、"!" を囲み記号とした空文字列ということになります。

 このとき qq に続く文字は半角記号であればなんでもよく、たとえば

print qq,abc,;

 とすると、"," を囲み記号として扱うので、結果として画面には "abc" と表示されます。

 これは、一般的な "" による文字列では、" を \" と表記しなければいけなかったりと色々面倒だから作られたものです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報