Уважаемые господа подскажите пожалуйста как вырезать из массива строки начинающиеся на #. Неделю бъюсь ничего не получается.
Пример:
#!/usr/bin/perl
@Stat = ('
#Timing mark 31626411. Interval 03:07
#1000 entries of 1000
#Dropped 533573 bytes
#src dst bytes
xxxxxxxx xxxxxxxxxxxxx
xxxxxxxx xxxxxxxxxxxxx
#end');
foreach $s (@Stat) {
if ($s = ~/^#/) { next; }
@Stat1=(@Stat, $s)
}
>Уважаемые господа подскажите пожалуйста как вырезать из массива строки начинающиеся на #.
>Неделю бъюсь ничего не получается.
>Пример:
>#!/usr/bin/perl
>@Stat = ('
>#Timing mark 31626411. Interval 03:07
>#1000 entries of 1000
>#Dropped 533573 bytes
>#src dst bytes
>xxxxxxxx xxxxxxxxxxxxx
>xxxxxxxx xxxxxxxxxxxxx
>#end');
В этом случае массив Stat содержит 1 элемент (строку с переводами строк)
Все заработает если добавить
@Stat = split("\n",$Stat[0]);
Но проблема вероятно в неверном понимании массива>foreach $s (@Stat) {
#$s == "\n#Timing mark 31626411. Interval 03:07\n...\nxxxxxxxx xxxxxxxxxxxxx\n....";
>if ($s = ~/^#/) { next; }
>@Stat1=(@Stat, $s)
>}
Прошу прощения сделал ошибку в самом начале, там должно было быть:@Stat = split(/\n/, '#Timing mark 31626411. Interval 03:07
...........................Так вот как правильно составить резулярное выражение для поиска и удаления строк, начинающихся с #?
>Прошу прощения сделал ошибку в самом начале, там должно было быть:
>
>@Stat = split(/\n/, '#Timing mark 31626411. Interval 03:07
>...........................
>
>Так вот как правильно составить резулярное выражение для поиска и удаления строк,
>начинающихся с #?
if ($s = ~/^#/) { next; }
- это правильно!
можно также unless ($s = ~/^#/) {
push(@Stat1, $s); # добавляет $s в @Stat1
}
включить в массив: perldoc -f push
исключить : perldoc -f splice@Stat1=(@Stat, $s) - НЕ ВЕРНО!
>if ($s = ~/^#/) { next; }
>- это правильно!
>можно также unless ($s = ~/^#/) {
>push(@Stat1, $s); # добавляет $s в @Stat1
>}А с этого места можно поподробнее, что это за функции?
>включить в массив: perldoc -f push
>исключить : perldoc -f splice
>
И еще вопросforeach $s (@Stat) {
if($s=~/^#/) {
push(@Stat1, $s);
}
}Массив @Stat1 в данном случае будет содержать строки которые начинаюся с #, а как правильнее получить массив который не содержит данных строк?
>И еще вопрос
>
>foreach $s (@Stat) {
>if($s=~/^#/) {
>push(@Stat1, $s);
>}
>}
>
>Массив @Stat1 в данном случае будет содержать строки которые начинаюся с #,
>а как правильнее получить массив который не содержит данных строк?Вместо if($s=~/^#/) {
unless ($s=~/^#/) {
ИЛИ
if($s !~ /^#/) {
Большое спасибо за консультации!
Будем юзать дальше.
>>if ($s = ~/^#/) { next; }
>>- это правильно!
>>можно также unless ($s = ~/^#/) {
>>push(@Stat1, $s); # добавляет $s в @Stat1
>>}
>
>А с этого места можно поподробнее, что это за функции?
>>включить в массив: perldoc -f push
>>исключить : perldoc -f splice
Ты имеешь ввиду perldoc ? - Очень полезная функция.
Если у тебя *nix => в bash'е дай эти команды. Открывает man по Перлу. (Выход : 'q').
+ пользуйся
man perl
man perlfunc
(все из shell вызывается)