my $content = $response->content; my @network = split(/\n/,$content); @network = map { m/$regex/ ? $1 : ()} @network; ... foreach (@network) { system("ipset add temp_$set_name $_"); }

You don't do any error checking on the contents of @network so why not just:

... foreach ( $response->content =~ /$regex/g ) { system("ipset add temp_$set_name $_"); }


system("ipset create temp_$set_name $set_type"); foreach (@network) { system("ipset add temp_$set_name $_"); } system("ipset create -exist $set_name $set_type"); system("ipset swap temp_$set_name $set_name"); system("ipset destroy temp_$set_name"); my $cron_notice = "IPSet: $set_name updated (as of: $d +ate_now)."; system("logger", "-p", "cron.notice", $cron_notice);

You don't do any error checking on the system calls.    Perhaps something like this:

0 == system 'ipset', 'create', "temp_$set_name", $set_ +type or warn "Cannot execute ipset because: $?";


@dates_last = $fh->getlines; @dates_last = map(m/^(\d+).*$/,@dates_last);

You don't really need two steps there and you don't really need .*$ at the end of the regular expression:

@dates_last = map /^(\d+)/, $fh->getlines;


@dates_last = split(/ /,"0 " x $urls_number)

Or just:

@dates_last = ( 0 ) x $urls_number


'(^([0-9]{1,3}\.){3}[0-9]{1,3}).*$', ... '^(\d.*\d).*$', ... '(.*)',

You should compile your regular expressions here using the qr operator and the .*$ at the end is superfluous.

qr/(^([0-9]{1,3}\.){3}[0-9]{1,3})/, ... qr/^(\d.*\d)/, ... qr/(.*)/,


@dates_now = map {$_ . "\n"} @dates_now; print $fh @dates_now;

No need for two steps:

print $fh map "$_\n", @dates_now;

In reply to Re: Create a ipset for blocking networks based on internet sources by jwkrahn
in thread Create a ipset for blocking networks based on internet sources by mimosinnet

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.