split & Perl
От: Senyai Россия http://www.arseniy.net
Дата: 21.06.04 20:33
Оценка:
Здравствуйте Господа!
Есть:
 $si=”Пусть|Всегда|Будет|hello|World”;
 $sj=”Пусть|Всегда|||World”;
 @pi= split(/\|/,$si);
 @pj= split(/\|/,$sj);

Получаем:
@pi=Пусть , Всегда , Будет , hello , World
@pj=Пусть , Всегда
Желательно, чтобы:
@pj=Пусть, Всегда ,””,””, World
Не бойтесь совершенства. Вам его не достичь. © Сальвадор Дали
Re: split & Perl
От: Аноним  
Дата: 22.06.04 04:50
Оценка: +1
$si=”Пусть|Всегда|Будет|hello|World”;
$sj=”Пусть|Всегда|||World”;
@pi= split(/\|/,$si);
@pj= split(/\|/,$sj);

Привет!
Тебе нужно что бы $pj[2] и $pj[3] были пустыми строками?
У тебя после split'a
$pj[0]="Пусть";
$pj[1]="Всегда";
$pj[2]="";
$pj[3]="";
$pj[4]="World";
Re: split & Perl
От: butcher Россия http://bu7cher.blogspot.com
Дата: 22.06.04 04:58
Оценка:
Здравствуйте, Senyai, Вы писали:

S>
S> $si=”Пусть|Всегда|Будет|hello|World”;
S> $sj=”Пусть|Всегда|||World”;
S> @pi= split(/\|/,$si);
S> @pj= split(/\|/,$sj);
S>

S>Получаем:
S> @pi=Пусть , Всегда , Будет , hello , World
S> @pj=Пусть , Всегда
S>Желательно, чтобы:
S>@pj=Пусть, Всегда ,””,””, World

Ты сделай:
print join(', ',@pj);

Нет ничего невозможного..
Re[2]: split & Perl
От: Senyai Россия http://www.arseniy.net
Дата: 22.06.04 06:14
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Привет!
А>Тебе нужно что бы $pj[2] и $pj[3] были пустыми строками?
А>У тебя после split'a
А>
А>$pj[0]="Пусть";
А>$pj[1]="Всегда";
А>$pj[2]="";
А>$pj[3]="";
А>$pj[4]="World";
А>

Да, нужно чтобы $pj[2] и $pj[3] были пустыми строками.
А @pj у меня:
А>$pj[0]="Пусть";
А>$pj[1]="Всегда";

И усё.
Не бойтесь совершенства. Вам его не достичь. © Сальвадор Дали
Re[3]: split & Perl
От: butcher Россия http://bu7cher.blogspot.com
Дата: 22.06.04 06:19
Оценка: +1
Здравствуйте, Senyai, Вы писали:

S>Да, нужно чтобы $pj[2] и $pj[3] были пустыми строками.

S>А @pj у меня:
S>
А>>$pj[0]="Пусть";
А>>$pj[1]="Всегда";
S>

S>И усё.

Они и так пустые, просто когда ты выводишь через print "@pj", у тебя строка прерывается первой же "пустой строкой", используй join

Нет ничего невозможного..
Re: split & Perl
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 22.06.04 06:31
Оценка:
Здравствуйте, Senyai, Вы писали:

S>Здравствуйте Господа!

S>Есть:
S>
S> $si=”Пусть|Всегда|Будет|hello|World”;
S> $sj=”Пусть|Всегда|||World”;
S> @pi= split(/\|/,$si);
S> @pj= split(/\|/,$sj);
S>

S>Получаем:
S> @pi=Пусть , Всегда , Будет , hello , World
S> @pj=Пусть , Всегда
S>Желательно, чтобы:
S>@pj=Пусть, Всегда ,””,””, World
можно сделать так
@pj= grep {$_} split(/\|/,$sj);
Re[2]: split & Perl
От: Vamp Россия  
Дата: 22.06.04 07:33
Оценка:
A>@pj= grep {$_} split(/\|/,$sj);
А можео полюбопытствовать, что означает такой синтаксис? Никогда не сталкивался...
Да здравствует мыло душистое и веревка пушистая.
Re[3]: split & Perl
От: butcher Россия http://bu7cher.blogspot.com
Дата: 22.06.04 07:39
Оценка:
Здравствуйте, Vamp, Вы писали:

A>>@pj= grep {$_} split(/\|/,$sj);

V>А можео полюбопытствовать, что означает такой синтаксис? Никогда не сталкивался...

результатом этого выражения является список скаляров, длинна которых больше нуля

(С) Ларри Уолл "Программирование на Perl"

Нет ничего невозможного..
Re[4]: split & Perl
От: Vamp Россия  
Дата: 22.06.04 07:42
Оценка:
B>

результатом этого выражения является список скаляров, длинна которых больше нуля

B>(С) Ларри Уолл "Программирование на Perl"
Это более-менее понятно из контекста
А вот за счет чего это так?
Да здравствует мыло душистое и веревка пушистая.
Re[3]: split & Perl
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 22.06.04 07:46
Оценка: 4 (1)
Здравствуйте, Vamp, Вы писали:

A>>@pj= grep {$_} split(/\|/,$sj);

V>А можео полюбопытствовать, что означает такой синтаксис? Никогда не сталкивался...
смущает ситнаксис вызова функции grep ? это просто вызов без заклбчение параметров в скобки,
первый аркумент это блок {$_} которому по очереди подаются элементы массива split(/\|/,$sj),
а он возаращает этот же элемент, а пустаю срока в perl — это не истина, поэтому в выходной массив
не попадают пустые строки.
можно написать со скобками:
@pj= grep($_,split(/\|/,$sj));

а вообще см.
perldoc -f grep
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.