Perl - mwicat/personal GitHub Wiki

Find module location

perl -M'Data::Dump qw(pp)' -e 'use DateTime; pp(\%INC);' 2>&1 | grep DateTime

Serialize to json

use JSON;
print to_json($data, { pretty => 1, canonical => 1 } );

Logger

use Log::Log4perl;

my $log_conf = q(
    log4perl.logger			        = DEBUG, Screen
    log4perl.appender.Screen        = Log::Log4perl::Appender::Screen
    log4perl.appender.Screen.layout = \
        Log::Log4perl::Layout::PatternLayout
    log4perl.appender.Screen.layout.ConversionPattern = %d %m %n
);

Log::Log4perl::init(\$log_conf);

my $logger = Log::Log4perl->get_logger();

$logger->info("Test message");
use Log::Log4perl;

Log::Log4perl::init('log4perl.conf');

my $logger = Log::Log4perl->get_logger();

$logger->info("Test message");

Write json to file

use JSON;
my $result = to_json(\%data, { pretty => 1, canonical => 1 } );
open(my $fh, '>', '/var/tmp/result.txt');
print $fh $result;
close $fh;

Read lines into array

open(my $fh, '<', $urls_file);

my @urls;

while (my $row = <$fh>) {
  chomp $row;
  push @urls, @u;
}

Dump variable

use Data::Dumper; warn Dumper($foo);

Install script dependencies

wget http://beyondgrep.com/ack-2.12-single-file -O ~/bin/ack
wget https://raw.github.com/miyagawa/cpanminus/master/cpanm -O ~/bin/cpanm
perl -c sms.miastoplusa.pl 2>&1 | ack -i "Can't locate ((\w+\/)*(\w+)).pm" --output='$1' | perl -pe "s{/}{::}g" | sudo cpanm

Handle errors

unless (-e $dest_dir) {
    mkdir $dest_dir or die "Cannot create path $dest_dir: $!";
}

Omit tests

sudo apt-get install cpanminus
sudo cpanm --notest List::MoreUtils XML::XML2JSON
⚠️ **GitHub.com Fallback** ⚠️