Каково различие между одинарными и двойными кавычками в Perl?

Я только начинаю изучать Perl. Я посмотрел вначале страница жемчуга и начал работать.

Это говорит:

Различие между одинарными кавычками и двойными кавычками - то, что одинарные кавычки означают, что их содержание должно быть взято буквально, в то время как двойные кавычки означают, что их содержание должно быть интерпретировано

Когда я запускаю эту программу:

#!/usr/local/bin/perl
print "This string \n shows up on two lines.";
print 'This string \n shows up on only one.';

Это производит:

This string
 shows up on two lines.
This string
 shows up on only one.

Я неправильно где-нибудь? версия жемчуга ниже:

perl -v

This is perl, v5.8.5 built for aix

Copyright 1987-2004, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'.  If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.

5
задан animuson 15 March 2012 в 00:35
поделиться

6 ответов

Ik ben geneigd te zeggen dat er iets aan de hand is met je shell / terminal, en waar je ook naar uitvoert, is de \ n interpreteren als een nieuwe regel en dat het probleem niet bij Perl ligt.

Om te bevestigen: dit zou niet moeten gebeuren (TM) - in het eerste geval zou ik verwachten dat er een nieuwe regel wordt ingevoegd, maar met enkele aanhalingstekens zou deze letterlijk de tekens \ n en niet een nieuwe regel.

15
ответ дан 18 December 2019 в 06:22
поделиться

В Perl одноцифровые строки не расширяют обратные слэш-кадры, как \n или \t. Причина, по которой вы видите, что они расширяются, вероятно, связана с природой используемой вами оболочки, которая по каким-то причинам снабжает ваш вывод.

4
ответ дан 18 December 2019 в 06:22
поделиться

Все, что вам нужно знать о цитировании и цитате, подобных цитатам, находится в Perlop .

Чтобы ответить на ваш конкретный вопрос, двойные кавычки могут превратить определенные последовательности литеральных символов в другие символы. В вашем примере двойные цитаты поворачивают последовательность символов \ и n в один символ, который представляет собой новую строку. В одной цитированной строке та же буквальная последовательность является просто буквальным \ и n символов.

3
ответ дан 18 December 2019 в 06:22
поделиться

Я обнажил свою версию Haskell на днях, так непроверенную, но следующее кажется немного проще других (использует сопоставление образцов и падение, чтобы избежать застежка -молния и mod):

everynth :: Int -> [a] -> [a]
everynth n xs = y : everynth n ys
         where y : ys = drop (n-1) xs
-121--1309863-

Как это звучит как решение:

  1. XMLIgnore каждая вторичная ссылка т.е. Регистрация. Студент & Зачисление. Курс
  2. создает свойство для каждого вторичного ссылка, которая используется для сериализовать/десериализовать внешний ключ вместо этой ссылки - префикс с XML_FK. например, XML_FK_Student & XML_FK_Course
  3. Создайте XML_FinalizeDeserialization метода, вызывается после десериализации для загрузки ссылки, использующие эти иностранные ключевые свойства.
-121--3702298-

Под «интерпретированными» они означают, что имена переменных и такие имена не будут напечатаны, а их значения .\n - это переходная последовательность, поэтому я думаю, что она не будет интерпретирована.

1
ответ дан 18 December 2019 в 06:22
поделиться

В дополнение к вашей ссылке O'Reilly ссылка не менее авторитетным, чем книга «программирования Perl» Ларри стена, утверждает, что интерполяция обратной косой черты не возникает в одном цитировании.

... much like Unix shell quotes: double quoted string literals are subject to   
backslash and variable interpolation; single quoted strings are not   
(except for \' and \\, so that you may ...)  

Programing Perl, 2nd ed, 1996 page 16

Так было бы интересно посмотреть, что делает ваш Perl с
Распечатать «Двойное обратное ятье n: \\ n»;

Как указано выше, покажите нам вывод из «PERL -V».

И я считаю, что я запутал программное обеспечение для редактора Форума, потому что эта последняя Perl 'Print' должна иметь отступ.

1
ответ дан 18 December 2019 в 06:22
поделиться

Если использовать двойную кавычку, то \n будет интерпретироваться как новая строка.

Но если вы используете одинарную кавычку, то \n не будет интерпретироваться как новая строка.

У меня все работает правильно.

содержимое файла

print "This string \n shows up on two lines.";
print 'This string \n shows up on only one.'
1
ответ дан 18 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: