An dieser Stelle verwende ich zwei Perl-Skripte, um eine Textdatei in das gewünschte Format zu konvertieren. Ein Perl-Skript lädt eine Datei mit der API aus dem Web herunter, speichert sie als Datei und druckt dann nur die IP-Adressen (zB ips.txt) - dann leite ich die Ausgabe in eine andere Textdatei (zB perl script1.pl> ips2.txt)). Die gedruckte Ausgabe sieht wie folgt aus:Kombinieren Sie zwei Perl-Skripte
222.187.221.224
222.187.221.250
222.187.239.35
222.187.239.136
222.215.230.79
222.215.230.85
Das zweite Skript nimmt die Datei, die ich geschaffen, um die IP-Adressen in folgendem Format zu ändern:
("222.187.239.35" OR "222.187.239.136" OR "222.215.230.79" OR "222.215.230.85")
Meine Frage ist, wie kann ich am effizientesten diese beiden kombinieren Perl-Skripte in eins, um alle erforderlichen Aktionen durchzuführen? Die Dateierstellung ist unnötig, es ist nur die einzige Möglichkeit, wie ich es bisher geschafft habe. Hilfe wird sehr geschätzt.
erstes Drehbuch:
#/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use Regexp::Common qw/net/;
getstore("https://<redacted>", "ips.txt");
open(my $input, "<", "ips.txt");
while (<$input>) {
print $1, "\n" if /($RE{net}{IPv4})/;
}
Zweite Skript:
#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use Regexp::Common qw/net/;
open(my $input, "<", "ips2.txt");
print '(', join(' OR ', map { chomp; qq{"$_"} } grep { /$RE{net}{IPv4}/ } <$input>), ")\n";
Wunsch gedruckte Ausgabe (viele IPs, das ist nur ein Beispiel):
("222.187.239.35" OR "222.187.239.136" OR "222.215.230.79" OR "222.215.230.85")
Das 'grep {/ $ RE {net} {IPv4} /}' ist nicht notwendig, basierend darauf, wie Sie die Datei auffüllen. – ikegami