объединение результатов в строку

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

объединение результатов в строку

Непрочитанное сообщение zingel » 2009-10-10 21:58:31

Товарищи! Есть простой скрипт который берёт айпи из списка 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 символ перевода строка *\*?
Z301171463546 - можно пожертвовать мне денег

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: объединение результатов в строку

Непрочитанное сообщение paradox » 2009-10-10 22:02:24

дай догадаюсь
у тебя не просто
вот так
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 сделать им

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: объединение результатов в строку

Непрочитанное сообщение zingel » 2009-10-10 22:25:18

а еще и
Цитата:
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 сунуть их к именам поддоменов чтобы потом строки сунуть в файл зоны домена

можно ещё и через

Код: Выделить всё

unshift ($k, $j)
но это какое то колдунство, может проще что есть, strings не берёт на выходе....

P.s. то есть мне по сути нужно избваиться от *\n* где то по середине
Z301171463546 - можно пожертвовать мне денег

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: объединение результатов в строку

Непрочитанное сообщение paradox » 2009-10-10 22:31:51

не посредине
а отдельно каждую переменную отрезать по \n
прежде чем ты ее будешь print

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: объединение результатов в строку

Непрочитанное сообщение ProFTP » 2009-10-10 22:34:27

то что я вижу пока:
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;
}
}

Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: объединение результатов в строку

Непрочитанное сообщение ProFTP » 2009-10-10 22:35:23

там может симво стоять какой-то левый, который ты не видишь редатор... а тот символ означает проблел - его надо как-то снести
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: объединение результатов в строку

Непрочитанное сообщение paradox » 2009-10-10 22:40:52

=~ s/\r+/\n/g
вот это я и имел ввиду
токо по каждой переменной нужно сделать до того внутри цикла что бы print уже выводил без \n
а в самом print добавить в конце \n

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: объединение результатов в строку

Непрочитанное сообщение paradox » 2009-10-10 22:42:03

точнее

Код: Выделить всё

=~ s//\n/g
наверное так
суть порезать все \n \r

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: объединение результатов в строку

Непрочитанное сообщение ProFTP » 2009-10-10 22:45:20

сделай, выведет чистый - все как есть :)

Код: Выделить всё

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);
}
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: объединение результатов в строку

Непрочитанное сообщение zingel » 2009-10-10 23:14:36

use Devel::Peek;
хитрец, откуда же в жопе алмазы ? =) ну ладно сейчас поставлю и сделаю
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: объединение результатов в строку

Непрочитанное сообщение zingel » 2009-10-10 23:22:08

Код: Выделить всё

# ./subSPIS.pl
SV = NULL(0x0) at 0x604160
  REFCNT = 1
  FLAGS = ()
ну сделал, тоже самое в итоге, а если пример парадокса то вообще пустота =)

Код: Выделить всё

./subDNS.pl | sed "s/'/\n/g" - то же самое

Код: Выделить всё

./subDNS.pl | tr "\'" "\n"  - то же самое

Код: Выделить всё

./subDNS.pl | tr "\n" "\'" 
- В кучу всё =)
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: объединение результатов в строку

Непрочитанное сообщение ProFTP » 2009-10-10 23:26:12

у меня работает, странно

попробуй тогда так, потом оборви ctrl+c

Код: Выделить всё

use Devel::Peek;

for (@php) {
Dump($_);
}
а то что вверху не работает, что парадокс написал?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: объединение результатов в строку

Непрочитанное сообщение paradox » 2009-10-10 23:30:22

Код: Выделить всё

foreach $k (@php) {
+
+ сдесь нужно обрезать пероеменные от \n \r
+
+
print "$k IN A $file[$j]";  сюда нужно добавить \n

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: объединение результатов в строку

Непрочитанное сообщение zingel » 2009-10-10 23:32:36

for (@php) {
Dump($_);
}
пустую строку возвращает, ну ладно сама суть понятна...
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: объединение результатов в строку

Непрочитанное сообщение ProFTP » 2009-10-11 0:08:52

странно у меня выводит

Код: Выделить всё

./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
Последний раз редактировалось ProFTP 2009-10-11 0:09:29, всего редактировалось 1 раз.
Причина: исправил
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение