Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Расскажите пожалуйста о print


Автор: Dima85 6.9.2009, 22:39
Когда только начинал учить Perl 
Выводил данные так:
Код

print "текст";

или так
Код

print 'текст';


Совсем недавно узнал о достаточно новом для себя способе, но нигде не могу найти толкового описания. Расскажите пожалуйста чем отличается такой вывод от предыдушищ описанных мною?:
Код

print qq~текст~;


Так же будет очень интересно услышать, возможно есть какие-то еще команды для вывода текста? И каким лучше пользовать?

Автор: sir_nuf_nuf 6.9.2009, 22:46
Код

$str = 'bu';
$str = "$bu";
$str = q/bu/;
$str = qq/bu/;
$str = <<<END;
bu
END;
$str = <<<"END";
bu
END;

Общее правило. То что в двойных кавычках (""  или qq//) - осуществляет интерполяцию переменных, т.е.
Код

$a = 1;
$str = "hello, $a helo!";  # hello, 1 helo!



Ну так же еще есть
Код

$str = `ls -la`;
$str = qx/ls -la/;

запуск команд оболочки и получение их вывода.

Автор: Dima85 6.9.2009, 22:50
Спасибо. А есть какая-то разница допустим между ""  и qq//?

Я где-то на это форуме слышал высказывание что print вообще уже устарел и использовать его не стоит. Если это так то почему? И что пришло ему на замену?

Автор: sir_nuf_nuf 6.9.2009, 23:01
Цитата(Dima85 @  6.9.2009,  22:50 Найти цитируемый пост)
А есть какая-то разница допустим между ""  и qq//?

очень небольшая:
если вы используете ", то в самой строке вам нужно экранировать символ кавычки
а если qq//  или qq** или еще какой - то вам нужно экранировать этот самый символ (/ или * или как у вас ~)


Цитата(Dima85 @  6.9.2009,  22:50 Найти цитируемый пост)
Я где-то на это форуме слышал высказывание что print вообще уже устарел и использовать его не стоит

Вот негодяи. Это наверняка PHP-шники, они совсем не уважают олд-скул. Поклоняются новомодному echo. Не слушай их =)
А серьезно.. print - это оператор вывода данных в файл. Единственный в перл (если не считать различные вариации типа printf). Он не может устареть, ибо его нечем заменить. Ну некоторые предпочитают использовать обертки типа IO::Handle - это на вкус.

И да, не путайте print, c тем, что вы писали выше. "" и q// -  это способ записи литерала - т.е. строкового скаляра в программе. print - это вывод данных. Они никак не связаны.

Автор: Dima85 6.9.2009, 23:08
Спасибо большое. Вы уже не первый раз находите время и помогаете мне иногда наверное в совершенно бестолковых вопросах. Спасибо.

Насчет 
Код

И да, не путайте print, c тем, что вы писали выше. "" и q// -  это способ записи литерала - т.е. строкового скаляра в программе. print - это вывод данных. Они никак не связаны.

Да, да, я просто посчитал излишнем писать print т.к. сама тема посвещаня ему. 

Автор: TDrive 7.9.2009, 02:01
Цитата(sir_nuf_nuf @  6.9.2009,  23:01 Найти цитируемый пост)
Единственный в перл (если не считать различные вариации типа printf)


есть ещё syswrite()


Автор: KSURi 7.9.2009, 10:42
Цитата(sir_nuf_nuf @  6.9.2009,  23:01 Найти цитируемый пост)
Единственный в перл (если не считать различные вариации типа printf)

say

Автор: sir_nuf_nuf 7.9.2009, 10:53
Цитата(TDrive @  7.9.2009,  02:01 Найти цитируемый пост)
syswrite()

факт. я ошибался. действительно есть syswrite.

Цитата(KSURi @  7.9.2009,  10:42 Найти цитируемый пост)
say

ээ... вариация print

Автор: shamber 7.9.2009, 19:26
Цитата(Dima85 @  6.9.2009,  22:50 Найти цитируемый пост)
print вообще уже устарел и использовать его не стоит

на сколько я помню, тут пробегала, тема о том что print в CGI это мазохизм smile
 Но никак не про "весь" print .

Автор: TDrive 7.9.2009, 23:26
Цитата(shamber @  7.9.2009,  19:26 Найти цитируемый пост)
на сколько я помню, тут пробегала, тема о том что print в CGI это мазохизм smile


из серии если гвоздь не забивается то виноват молоток smile

Автор: Bulat 8.9.2009, 17:23
Цитата(sir_nuf_nuf @  6.9.2009,  23:01 Найти цитируемый пост)
Поклоняются новомодному echo.


по-моему еще в C-shell'е присутствует такая команда как "echo".  Так что если мне не изменяет память, то все новое - это хорошо забытое старое  smile 


Цитата(Dima85 @  6.9.2009,  22:50 Найти цитируемый пост)
Я где-то на это форуме слышал высказывание что print вообще уже устарел и использовать его не стоит. Если это так то почему? И что пришло ему на замену?

Е-ех )) по-моему, еще в QBasic'e... или в Pascal'e (опять же если мне не изменяет память, но уже забываю) - print - это команда вывода на печать. "Принтер" собс-но )) 

А насчет устарел ))) Как уже было подмечено, для вывода в файл - самое оно. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)