Страница 1 из 1
объединение результатов в строку
Добавлено: 2009-10-10 21:58:31
zingel
Товарищи! Есть простой скрипт который берёт айпи из списка iplist и ставит перед стройкой которую бертё из списка domains, как не трудно догадатся скрипт нужен для записей в зоне домена:
Код: Выделить всё
#!/usr/bin/perl
open f, "./iplist.txt";
my @file = <f>;
close f;
open f2, "./domains.txt";
my @php = <f2>;
close f2;
my $j = 0;
foreach $k (@php) {
print "$k IN A $file[$j]";
if($j < 100) {
$j++;
} else {
$j = 0;
}
}
но результат получается не в одну строку а в две то есть вместо
domain.tld IN A 123.45.67.89
получается
domain.tkd
IN A 123.45.67.89
Отсюда вопрос: как объединить в одну строку или лучше поставить после print "$k символ перевода строка *\*?
Re: объединение результатов в строку
Добавлено: 2009-10-10 22:02:24
paradox
дай догадаюсь
у тебя не просто
вот так
domain.tkd
IN A 123.45.67.89
а еще и
domain.tkd
IN A 123.45.67.89
domain.tkd
IN A 123.45.67.89
domain.tkd
IN A 123.45.67.89
тоесть пустые строки))
потому что у тебя переменные $k $file[$j]
уже содержат и \n
стрипай их как там в перле это делаеться ~\\\ или типа того
или можно попробовать split сделать им
Re: объединение результатов в строку
Добавлено: 2009-10-10 22:25:18
zingel
а еще и
Цитата:
domain.tkd
IN A 123.45.67.89
domain.tkd
IN A 123.45.67.89
domain.tkd
IN A 123.45.67.89
ну вообще там по задумке взять ip и с 1 до 100 сунуть их к именам поддоменов чтобы потом строки сунуть в файл зоны домена
можно ещё и через
но это какое то колдунство, может проще что есть, strings не берёт на выходе....
P.s. то есть мне по сути нужно избваиться от *\n* где то по середине
Re: объединение результатов в строку
Добавлено: 2009-10-10 22:31:51
paradox
не посредине
а отдельно каждую переменную отрезать по \n
прежде чем ты ее будешь print
Re: объединение результатов в строку
Добавлено: 2009-10-10 22:34:27
ProFTP
то что я вижу пока:
chomp( f2 );
и
$_ =~ s/\r+/\n/g for (@php);
Код: Выделить всё
#!/usr/bin/perl
open f, "./iplist.txt";
my @file = <f>;
close f;
open f2, "./domains.txt";
chomp( f2 );
my @php = <f2>;
close f2;
my $j = 0;
foreach $k (@php) {
print "$k IN A $file[$j]";
if($j < 100) {
$j++;
} else {
$j = 0;
}
}
Код: Выделить всё
#!/usr/bin/perl
open f, "./iplist.txt";
my @file = <f>;
close f;
open f2, "./domains.txt";
my @php = <f2>;
close f2;
$_ =~ s/\r+/\n/g for (@php);
my $j = 0;
foreach $k (@php) {
print "$k IN A $file[$j]";
if($j < 100) {
$j++;
} else {
$j = 0;
}
}
Re: объединение результатов в строку
Добавлено: 2009-10-10 22:35:23
ProFTP
там может симво стоять какой-то левый, который ты не видишь редатор... а тот символ означает проблел - его надо как-то снести
Re: объединение результатов в строку
Добавлено: 2009-10-10 22:40:52
paradox
=~ s/\r+/\n/g
вот это я и имел ввиду
токо по каждой переменной нужно сделать до того внутри цикла что бы print уже выводил без \n
а в самом print добавить в конце \n
Re: объединение результатов в строку
Добавлено: 2009-10-10 22:42:03
paradox
точнее
наверное так
суть порезать все \n \r
Re: объединение результатов в строку
Добавлено: 2009-10-10 22:45:20
ProFTP
сделай, выведет чистый - все как есть
Код: Выделить всё
open f, "./iplist.txt";
my @file = <f>;
close f;
open f2, "./domains.txt";
my @php = <f2>;
close f2;
use Devel::Peek;
for (0..@php) {
Dump(@php[$_]);
last if ($_ > 10);
}
Re: объединение результатов в строку
Добавлено: 2009-10-10 23:14:36
zingel
use Devel::Peek;
хитрец, откуда же в жопе алмазы ?

ну ладно сейчас поставлю и сделаю
Re: объединение результатов в строку
Добавлено: 2009-10-10 23:22:08
zingel
Код: Выделить всё
# ./subSPIS.pl
SV = NULL(0x0) at 0x604160
REFCNT = 1
FLAGS = ()
ну сделал, тоже самое в итоге, а если пример парадокса то вообще пустота
- В кучу всё

Re: объединение результатов в строку
Добавлено: 2009-10-10 23:26:12
ProFTP
у меня работает, странно
попробуй тогда так, потом оборви ctrl+c
а то что вверху не работает, что парадокс написал?
Re: объединение результатов в строку
Добавлено: 2009-10-10 23:30:22
paradox
Код: Выделить всё
foreach $k (@php) {
+
+ сдесь нужно обрезать пероеменные от \n \r
+
+
print "$k IN A $file[$j]"; сюда нужно добавить \n
Re: объединение результатов в строку
Добавлено: 2009-10-10 23:32:36
zingel
for (@php) {
Dump($_);
}
пустую строку возвращает, ну ладно сама суть понятна...
Re: объединение результатов в строку
Добавлено: 2009-10-11 0:08:52
ProFTP
странно у меня выводит
Код: Выделить всё
./perl.pl
SV = PV(0x8103850) at 0x810017c
REFCNT = 2
FLAGS = (POK,pPOK)
PV = 0x8104898 "sf"\0
CUR = 2
LEN = 4
SV = PV(0x81038c8) at 0x81002a8
REFCNT = 2
FLAGS = (POK,pPOK)
PV = 0x81178c8 "sdfsdf"\0
CUR = 6
LEN = 8
SV = PV(0x8103844) at 0x8100098
REFCNT = 2
FLAGS = (POK,pPOK)
PV = 0x810c3e8 "dswer"\0
CUR = 5
LEN = 8
SV = PV(0x8103910) at 0x8100b30
REFCNT = 2
FLAGS = (POK,pPOK)
PV = 0x8117968 "wsdf"\0
CUR = 4
LEN = 8
это сразу все будет видно
это строка
dswer"\0