Perl вопрос

Serge_S

а чем атличается наличме или отсутствие кавычек
ну например $com="full"
$com=full
print $com
print "$com"
в чем тут разница?
если одинарные кавычки-то там все тексом воспринимается вроде, а здесь что?

yolki

Я не специалист и перл видел только мельком, но по-моему, это как-то влияет на подстановку переменной $com - типа в двойных едёт замена на её значение, а в одинарных - нет.

Serge_S

не, ну в одинарных я знаю что не идет
а если совсем кавычек нету?

evgen5555


$com = fu ll;
$com ="fu ll";


Чуешь разницу?

Serge_S

не чую
вот короче че меня смутило

$com{"full"}="avi";
print "need is ", $com{"full"};


выдает все как надо
зато-

$com{"full"}="avi";
print "need is $com{"full"}";


нихрена не выдает

evgen5555

Правильно, и не будет.

Serge_S

но тем не менее-

$com="avi";
print "need is ", $com;


все ок!
и

$com="avi";
print "need is $com";


и оба работают прекрасно

Serge_S

ну обьясни плз

artimon

Однако вкладывать одинаковые кавычки, это надо суметь.

artimon

Короче, читать сообщения об ошибках и пользоваться ключом -w

tokuchu

Для строк, состоящих только из букв и цифр, кажется, можно опускать кавычки. Т.е. писать full вместо "full".
А вот между "$com" и $com разница есть некоторая. Если ты заключил в кавычки, то туда будет подставлено её текстовое представление и если ты делаешь не print, а присваивание, то разница будет.

Serge_S

ну почему он здесь текстовое значение не подставляет?

$com{"full"}="avi";
print "need is $com{"full"}";


тут ведь подставляет-

$com="avi";
print "need is $com";

rosali

Потому что если бы кавычки обозначались квадратными скобками, то ты хотел бы написать

print [need is $com{[full]}];


А получается

print [need is $com{]full[}];


PS. Ничего не смыслю в перле...

shlyumper

perldoc perlop блиа
читать про операторы q, qq, qx. Двойные кавычки - частный случай оператора qq.

evgen5555

Error C2431: The user doesn't understand the documentation.
Не встречал такую ошибку?

Serge_S

лан, сейчас прочту
просто мне казалось что если это переменная, то кавычки он воспринимать не будет....
странно...

Serge_S

че действительно есть такая?
на самом то деле я вот только начал изучать....по какой-то книге o'reily которая в сети валялась...
может там дальше все это написано...
сейчас прочту то, что Лео советует

buka

Вообще-то кавычки всегда нужны. Но специально для ленивых, "очевидные слова" (т.е. те наборы символов, что ничем кроме строки быть не могут) в режиме по умолчанию можно писать без кавычек.
Если в Перле не силен, пиши всегда "use strict" вначале программы -- сэкономит много сил на отладке.

sergey_m

> Если в Перле не силен, пиши всегда "use strict" вначале программы -- сэкономит много сил на отладке.
Если в перле силен, то тоже пиши

buka

Если прога зело длиннее этой строчки

Marinavo_0507

Если прога короткая, то можно её в командной строке записать, после -e

buka

Спасибо, знаю.

Barbie29

print qq~need is $com{"full"}~;
perldoc -f qq
у тебя ключ хеша в двойных кавычках и в двойных же кавычках принт, вот оно и посылает нафиг.
Оставить комментарий
Имя или ник:
Комментарий: