Forum Webscript.Ru
Программирование => Perl => Тема начата: YA от 21 Июня 2002, 07:52:22
-
Продолжаю бороться за чистоту кода :)
Нужно ли вместо переменных, содержащих никогда неменяющееся значение:
$a="эта строка не изменится";
print $a;
использовать ссылку на значение-константу:
*a=\\"эта строка не изменится";
print $a;
?
-
Немного не понял зачем тебе все эти извращения. Нужна константа используй
use constant A => \'Это константа\'
или
sub A() {\'Это константа\'}
-
stah@banquet$ perl -e \'*q = \\"Это константа"; $q = "Не констана";\'
Modification of a read-only value attempted at -e line 1.
Если только для таких предупреждений, но опять же лучше use constant или sub q() {\'q\'}. Но надо отдать должное использование typeglobs выглядит более по-хакерски!!! :)
И еще не используй нигде переменные $a, $b Так как они зарезервированы.
-
Немного не понял зачем тебе все эти извращения.
Ну почему же? По-моему это - sub A() {\'Это константа\'} - еще большее извращение.
use constant A => \'Это константа\'
Такая константа не будет интерполироваться.
Если только для таких предупреждений
Почему нет? Очень ценные предупреждения :)
И еще не используй нигде переменные $a, $b Так как они зарезервированы.
А вот это не понял... Кем/чем??? C какой версии? Первый раз слышу.
-
use constant A => \'...\'; и sub A() {\'..\'} практически одно и тоже.
Так вот sub A() оптимизируется во время компиляции в отличии от *q = \\\'...\';
Насчет ценных указаний, попробуй изменить A и тебя пошлют куда подальше.( чем не ценные указания :) )
Используй конкатенацию вместо интерполяции(она и работает быстрее)
Насчет зарезервированных переменных, посмотри на эти три кода:
stah@banquet$ perl -e \'use strict; $q = 1;\'
Global symbol "$q" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.
stah@banquet$ perl -e \'use strict; $a = 1;\'
stah@banquet$ perl -e \'use strict; $b = 1;\'
как ты думаешь почему последние 2 работают, а первый нет. Вот тебе и ответ на вопрос. perldoc -f sort
-
Насчет ценных указаний, попробуй изменить A и тебя пошлют куда подальше.( чем не ценные указания )
Так я и говорю: это полезно, когда на тебя ругаются :)
Используй конкатенацию вместо интерполяции(она и работает быстрее)
Знаю, но иногда ленюсь - символов больше :))
perldoc -f sort
- это освежило память, спасибо!