[perl] обработка двух строк массива как одну

Fake_queen

Какие-нибудь есть приемчики, как с помощью Perl обработать массив строк так, чтобы анализировались две строки как одна?
Или можно ли строки вида
1
а
2
б
3
в
...
объединить в строки вида



..
спасибо

uncle17


for (my $i=0; $i<размер_массива; $i+=2)
{
$b[$i/2] = $a[$i].$a[$i+1];
}

Fake_queen

а ну да, спасибо

uncle17

только если честно, я перл почти не знаю
Посему вопрос - а массив @b как надо перед этим объявлять?

Fake_queen

ээ..
полагаю будет просто @b;

skvoria

Кажися, @b =

uncle17

это вполне логично... а вот надо ли его вообще объявлять или он сам по себе появится?

Fake_queen

я если честно сам не спец
но я бы объявил

rosali


while (@a) {
process(shift @a, shift @a);
}

хотя действительно приличного способа к сожалению нет, хотелось бы что-нибудь типа

foreach my ($a,$b) (@a) {
...
}

но ниработаит.

Fake_queen

что-то не работает :
 
 
open(FI, "1.txt");
@a = <FI>;
@b = ;
for ($i=0; $i<6; $i+=2) {$b[$i/2] = $a[$i].$a[$i+1]
};
close (FI);
open (FO, ">out.txt");
print FO @b;
close(FO);

получается на выходе просто
 
 
1
a
2
b
3
c

может кто подскажет, в чем у меня лажа?

uncle17

а ты "\n"-ы то убери у значений

Marinavo_0507


while ( ($a, $b, @a) = @a, defined($a) ) {
...
}

только это неэффективно скорее всего

Fake_queen

где ты их там видишь?

uncle17

в файле 1.txt, по идее

Fake_queen

Файл 1.txt это просто:
 
1
a
2
b
3
c

uncle17

а переводы строк в нем отменили?
Создай файлы

1a2b3c

и

1
a
2
b
3
c

и сравни их размеры

Fake_queen

ок, понял.
а как их убрать-то?

uncle17


$a[$i] =~ s/\n//;

перед конкатенацией.
А если файл в винде создавался, то аналогично хорошо бы и "\r" убрать. У $a[$i+1] ничего убирать не надо в твоем примере

Fake_queen

спасибо

Ivan8209

Тебе нужно превратить первый файл во второй?
sed -n 'N;s/\^M*\^J//g;p'
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

eduard615

@a=('1','a','2','b');
%b=@a;
map {print "$_$b{$_}\n"} keys %b;
а \n уберается chomp' ом

rosali

 
 $a[$i] =~ s/\n//;  

йеба*уцца перловые програмисты вообще-то есть chomp
PS. ой не дочитал тред до конца

rosali

С хешем вариант потенциально ошибочный, что мешает ключам совпасть?..

uncle17

да ты и начало треда не читал. Я написал, что перл не знаю практически
Оставить комментарий
Имя или ник:
Комментарий: