Paranoid
view release on metacpan or search on metacpan
lib/Paranoid/Filesystem.pm view on Meta::CPAN
# Iterate over each directory in the glob
foreach $directory (@$dirs) {
pdebug( 'processing %s', PDLEVEL2, $directory );
# Skip directories already present
next if -d $directory;
# Otherwise, split so we can backtrack to the first available
# subdirectory and start creating subdirectories from there
@parts = split m#/+#s, $directory;
$i = $parts[0] eq '' ? 1 : 0;
$i++ while $i < $#parts and -d join '/', @parts[ 0 .. $i ];
while ( $i <= $#parts ) {
$subdir = join '/', @parts[ 0 .. $i ];
unless ( -d $subdir ) {
if ( mkdir $subdir, $mode ) {
# Make sure perms are applied
chmod $mode, $subdir;
lib/Paranoid/IO/Line.pm view on Meta::CPAN
pdebug( 'draining to next newline', PDLEVEL4 );
$content =~ s/^.*?@{[NEWLINE_REGEX]}//so;
$bflag = PBF_NORMAL;
$buffer = '';
}
# Check for newlines
if ( $content =~ /@{[NEWLINE_REGEX]}/so ) {
# Split lines along newline boundaries
@tmp = split m/(@{[NEWLINE_REGEX]})/so, $content;
while ( scalar @tmp > 1 ) {
if ( length $tmp[0] > PIOMAXLNSIZE ) {
splice @tmp, 0, 2;
$line = undef;
} else {
$line = join '', splice @tmp, 0, 2;
}
push @$aref, $line;
}
lib/Paranoid/Network.pm view on Meta::CPAN
subPreamble( PDLEVEL1, '@', @strings );
foreach $string (@strings) {
next unless defined $string;
# Look for IPv4 addresses
@ips = ( $string =~ /(@{[ IPV4CIDRRGX ]}|@{[ IPV4REGEX ]})/sog );
# Validate them by filtering through inet_aton
foreach $ip (@ips) {
@tmp = split m#/#s, $ip;
push @rv, $ip if defined inet_aton( $tmp[0] );
}
# If Socket6 is present or we have Perl 5.14 or higher we'll check
# for IPv6 addresses
if ( has_ipv6() or $] >= 5.012 ) {
@ips =
( $string =~ m/(@{[ IPV6CIDRRGX ]}|@{[ IPV6REGEX ]})/sogix );
# Filter out addresses with more than one ::
@ips = grep { scalar(m/(::)/sg) <= 1 } @ips;
# Validate remaining addresses with inet_pton
foreach $ip (@ips) {
@tmp = split m#/#s, $ip;
push @rv, $ip
if defined inet_pton( AF_INET6(), $tmp[0] );
}
}
}
subPostamble( PDLEVEL1, '@', @rv );
return @rv;
}
lib/Paranoid/Network/IPv4.pm view on Meta::CPAN
# Usage: @network = ipv4NetConvert($netAddr);
my $netAddr = shift;
my ( $bnet, $bmask, $t, @rv );
subPreamble( PDLEVEL1, '$', $netAddr );
# Extract net address, mask
if ( defined $netAddr ) {
($t) = ( $netAddr =~ m#^(@{[ IPV4CIDRRGX ]}|@{[ IPV4REGEX ]})$#s )[0];
( $bnet, $bmask ) = split m#/#s, $t if defined $t;
}
if ( defined $bnet and length $bnet ) {
# First, convert $bnet to see if we have a valid IP address
$bnet = unpack 'N', inet_aton($bnet);
if ( defined $bnet and length $bnet ) {
# Save our network address
lib/Paranoid/Network/IPv6.pm view on Meta::CPAN
subPreamble( PDLEVEL1, '$', $netAddr );
if ( has_ipv6() or $] >= 5.012 ) {
# Extract net address, mask
if ( defined $netAddr ) {
($t) =
( $netAddr =~ m#^(@{[ IPV6CIDRRGX ]}|@{[ IPV6REGEX ]})$#s )
[0];
( $bnet, $bmask ) = split m#/#s, $t if defined $t;
}
if ( defined $bnet and length $bnet ) {
# First, convert $bnet to see if we have a valid IP address
$bnet = [ unpack 'NNNN', inet_pton( AF_INET6(), $bnet ) ];
if ( defined $bnet and length $bnet ) {
# Save our network address
( run in 0.916 second using v1.01-cache-2.11-cpan-71847e10f99 )