Здравствуйте Господа!
Есть:
$si=”Пусть|Всегда|Будет|hello|World”;
$sj=”Пусть|Всегда|||World”;
@pi= split (/\|/,$si);
@pj= split (/\|/,$sj);
Получаем:
@pi=Пусть , Всегда , Будет , hello , World
@pj=Пусть , Всегда
Желательно, чтобы:
@pj=Пусть, Всегда ,””,””, World
Не бойтесь совершенства. Вам его не достичь. © Сальвадор Дали
От:
Аноним
Дата: 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";
Здравствуйте, 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);
Нет ничего невозможного..
Здравствуйте, Аноним, Вы писали:
А>Привет!
А>Тебе нужно что бы $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]="Всегда" ;
И усё.
Не бойтесь совершенства. Вам его не достичь. © Сальвадор Дали
Здравствуйте, Senyai, Вы писали:
S>Да, нужно чтобы $pj[2] и $pj[3] были пустыми строками.
S>А @pj у меня:
S>А>>$pj[0]="Пусть" ;
А>>$pj[1]="Всегда" ;
S>
S>И усё.
Они и так пустые, просто когда ты выводишь через print "@pj", у тебя строка прерывается первой же "пустой строкой", используй join
Нет ничего невозможного..
Здравствуйте, 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);
От:
Vamp
Дата: 22.06.04 07:33
Оценка:
A>@pj= grep {$_} split(/\|/,$sj);
А можео полюбопытствовать, что означает такой синтаксис? Никогда не сталкивался...
Да здравствует мыло душистое и веревка пушистая.
Здравствуйте, Vamp, Вы писали:
A>>@pj= grep {$_} split(/\|/,$sj);
V>А можео полюбопытствовать, что означает такой синтаксис? Никогда не сталкивался...
результатом этого выражения является список скаляров, длинна которых больше нуля
(С) Ларри Уолл "Программирование на Perl"
Нет ничего невозможного..
От:
Vamp
Дата: 22.06.04 07:42
Оценка:
B>результатом этого выражения является список скаляров, длинна которых больше нуля
B>(С) Ларри Уолл "Программирование на Perl"
Это более-менее понятно из контекста
А вот за счет чего это так?
Да здравствует мыло душистое и веревка пушистая.
Здравствуйте, Vamp, Вы писали:
A>>@pj= grep {$_} split(/\|/,$sj);
V>А можео полюбопытствовать, что означает такой синтаксис? Никогда не сталкивался...
смущает ситнаксис вызова функции grep ? это просто вызов без заклбчение параметров в скобки,
первый аркумент это блок {$_} которому по очереди подаются элементы массива split(/\|/,$sj),
а он возаращает этот же элемент, а пустаю срока в perl — это не истина, поэтому в выходной массив
не попадают пустые строки.
можно написать со скобками:
@pj= grep($_,split(/\|/,$sj));
а вообще см.
perldoc -f grep
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить