Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли как-нть короче 
:(
    Опции темы
Danissimo
Дата 8.12.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 14.8.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Можно ли как-нть короче записать такой код:

$str .= $_ foreach @arr;

?
PM MAIL   Вверх
Nab
Дата 8.12.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 25.3.2006
Где: Kiev

Репутация: 26
Всего: 37



$str .= join('', @arr);

Добавлено @ 13:17 
точка, эт потому что если там что было уже, так чтоб не затереть, а именно дописать...


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
Danissimo
Дата 8.12.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 14.8.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Спасибо!

Добавлено @ 13:21 
Интересно, а что быстрее? Вот amg бы сюда. Он любит бенчмарки проводить.
PM MAIL   Вверх
Danissimo
Дата 8.12.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 14.8.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



А можно ли как-нть короче:

my $OSNAME = "";
foreach (@input) {
    $OSNAME = $1 if (/^Software:OsName:(.+)/);
}

Что-то типа
    ($OSNAME = $1 if /^Software:OsName:(.+)/) foreach @input;
или
    {$OSNAME = $1 if /^Software:OsName:(.+)/} foreach @input;
или
    eval {$OSNAME = $1 if /^Software:OsName:(.+)/} foreach @input;

Добавлено @ 15:33 
А вот это укоротить можно?

use strict;
my @discard;
$0 = (@discard = split(/\//, $0))[$#discard];

как-нть так:

use strict;
$0 = (my @discard = split(/\//, $0))[$#discard];

короче, чтобы не объявлять отдельно discard, и, более того, не засирать namespace.
PM MAIL   Вверх
Danissimo
Дата 12.12.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 14.8.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Мужики, раз не отвечаете, значит укоротить нельзя, да? Или просто вопрос не заметили? =))
PM MAIL   Вверх
amg
Дата 12.12.2006, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(Danissimo @  8.12.2006,  15:28 Найти цитируемый пост)
use strict;
my @discard;
$0 = (@discard = split(/\//, $0))[$#discard];

Можно так:
Код
$0 =~ s|.*/||;

А лучше так ($0 то не вернешь)
Код
(my $program = $0) =~ s|.*/||;

PM MAIL   Вверх
DiverD
Дата 12.12.2006, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 14.9.2005
Где: Белорусь

Репутация: 1
Всего: 2



такое впечатление что ты пишишь кернел на перле и делаешь максимум оптимизированый код. =))
Все укорачиваешь=) ахахах
так ты переменным давай имена по одной букве $a, $w...
Мне толька не понятно что делает вот это $0 = (my @discard = split(/\//, $0))[$#discard]; ?
--------------------
[ FreeBSD & pERL p0WER eVERY dAY ]
PM MAIL   Вверх
amg
Дата 12.12.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(Danissimo @  8.12.2006,  15:28 Найти цитируемый пост)
my $OSNAME = "";
foreach (@input) {
    $OSNAME = $1 if (/^Software:OsName:(.+)/);
}

Код

my ($OSNAME) = grep {s/^Software:OsName://} @input;


PM MAIL   Вверх
amg
Дата 12.12.2006, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(DiverD @  12.12.2006,  13:56 Найти цитируемый пост)
Мне толька не понятно что делает вот это $0 = (my @discard = split(/\//, $0))[$#discard]; ?
$0 - имя скрипта. Это выражение убирает из имени путь (и его можно укоротить: $0 = (split '/', $0)[-1];)

Цитата(DiverD @  12.12.2006,  13:56 Найти цитируемый пост)
такое впечатление что ты пишишь кернел на перле и делаешь максимум оптимизированый код. =))Все укорачиваешь=) ахахах
IMHO, в данном случае максимально оптимизированный код оправдан, так как очень уж часто встречается. Один раз придумать и запомнить. У меня, например, в каждой программе используется что-то вроде
Код
if ($ARGV[0] =~ /^--?h(elp)?$/) {
  $0 =~ s/^.*[\/\\]//;
  die "Usage: $0 \n";
}



Это сообщение отредактировал(а) amg - 12.12.2006, 15:41
PM MAIL   Вверх
Danissimo
Дата 12.12.2006, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 14.8.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 1



amg, зачет!  smile 

DiverD, незачет, так как мнение о том, что и как я пишу, мало того, что ненужное, так еще и неверное. Нечего сказать -- лучше промолчать. Факт. А репутацию не кол-вом сообщений зарабатывают (ведь именно этим ты занимаешься), а толковыми, полезными, нужными ответами.  smile И поступаешь ты так уже не в первый раз. Надеюсь на понимание. smile 

Это сообщение отредактировал(а) Danissimo - 12.12.2006, 17:15
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.