perlで以下の文を実行すると'がみつかりませんと

表示されてしまいます。¥を指定するには、
何か特別な方法があるのでしょうか?
$dpass='c:\data\';

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2008/04/27 18:35:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:obake No.1

回答回数36ベストアンサー獲得回数3

ポイント20pt

http://www.rfs.jp/sb/perl/02/02.html#5.エスケープシーケンス

'c:\\data\\'とする事で表示できませんか?

id:youkan_ni_ocha

でました。ありがとうございます。 ’ と ”の違いってなんなんでしょうか、

2008/04/20 19:02:57
id:n_kusano No.2

回答回数48ベストアンサー獲得回数1

ポイント20pt

$dpass='c:\data\''

では?

http://www.rfs.jp/sb/perl/02/02.html

id:obake No.3

回答回数36ベストアンサー獲得回数3

ポイント20pt

http://www.rfs.jp/sb/perl/02/02.html#エスケープシーケンスの使用方法

コメントが付けられないみたいなので これにはポイントなくていいです。

例えば

print "テスト\n";

テスト

↓(改行)

と表示されると思います。

これを

print 'テスト\n';

とすると

テスト\n

こんな風にエスケープシーケンスが解釈されない事になります。

id:t_ishida No.4

回答回数18ベストアンサー獲得回数0

ポイント20pt
でました。ありがとうございます。 ’ と ”の違いってなんなんでしょうか、

に対する返答。

ダブルクォート ["]は\はメタ文字の展開と、変数の展開をするための引用符です。

print "$_\n" for 0..100;

つまり、変数をそのまま指定すれば、ダブルクォート中ではそのまま表現されると言う事ですね。

また、メタ文字は、\ + 文字で構成され、特殊な文字を表現するのに使います。

例えば、以下のようなものが有ります。

\n = 改行、\b = バックスペース、\t = タブ

また、\はもう一つ、エスケープシーケンスと呼ばれる使い方もします。

例えば、上記理由から[\]そのものを表したい時には、"\\"や、

[$]そのものを表したい時には、"\$"のように使用します。

print "\$_\\n" . "\n" for 0..100;


引用符(ダブルクォートや、シングルクォート)中に引用符自身を、

表現する場合には、\'や、\"のようにします。

例えば、

xyzzy"xyzzy = "xyzzy\"xyzzy"(ややこしい場合には'xyzzy"xyzzy'でも可)

xyzzy'xyzzy = 'xyzzy\'xyzzy'(ややこしい場合には"xyzzy'xyzzy"でも可)

のような感じです。



以上、参考になりましたか?

詳しい事を知りたい場合には、以下の書籍をお勧めします。

http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%...

id:pmakino No.5

回答回数358ベストアンサー獲得回数30

ポイント20pt

> ’と ”の違いってなんなんでしょうか

' は変数展開不可なリテラル、" は変数展開可なリテラルです。

http://www.rfs.jp/sb/perl/02/02.html#6%EF%BC%8E%E3%82%AF%E3%82%A...

展開可の構文は、ダラー( $ ) やアットマーク( @ ) で始まる変数、エスケープシーケンスを展開します。バッククォートはダブルクォートの中では展開されません。また、シングルクォートがダブルクォートの中で使われても、変数の展開を妨げることはありません。

つまり、

$a = 'hoge';

print "a=$a\n";

print 'a=$a\n';

とした場合、

a=hoge

a=$a\n

と表示されます。

しかし、' であっても \' は例外的にエスケープシーケンス展開されます。

このため、~\'; では ' という文字そのものを意味してしまい、リテラルが終了したと解釈されないのです。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません