Skip to content

Perl commands

Perl Commands

''  q//     Literal No
""  qq//    Literal Yes
``  qx//    Command Yes
()  qw//    Word list   No
//  m//     Pattern match   Yes
s///    s///    Substitution    Yes
y///    tr///   Translation No

Executing commands

my $command = qx/ls -alhS/;
my $command2 = qx`ls -alhS`;

print("$command");
print("$command2");

Perl commands in bash

perl -E 'printf("%g * %g = %.2f\n",5.2,7.6,(5.2*7.6));'
  • Disk space check executing bash Commands
    perl -E 'my $data = qx/df -h \/ /; say $data'
    

checking nameservers

/usr/local/cpanel/3rdparty/bin/perl -MCpanel::DnsRoots -MData::Dumper -e 'print Dumper(Cpanel::DnsRoots->new()->get_nameservers_for_domain("domain.com"));'

sed substitution in Perl

  • global /g option
    perl -E '$_ = "SubS subs SuBs";s/subs/mSubs/g;print("$_\n\n");'
    SubS mSubs SuBs
    
  • Case insensitive -i option + -g option global substitution
    perl -E '$_ = "SubS subs SuBs";s/subs/mSubs/gi;print("$_\n\n");'
    mSubs mSubs mSubs
    

perl grep

perl -E "@my_list = (1,2,3,4);@new_list = grep(/1/,@my_list);print(@new_list);"

array push ad-hoc oneliner

perl -e 'push @lines,("welcome","To","The");print("@lines\n");'

Check os oneliner

/usr/local/cpanel/3rdparty/perl/536/bin/perl -MCpanel::OS -e 'my $dist     = Cpanel::OS::distro();print("$dist\n");'

Reading files on the command line

perl -p -e filename.txt
  • Replacment on spot

    perl -p -e 's/test/system/g' test.yaml
    ---
    name: something
      - system1
      - system2
      - system3
    
  • Multiple Replacements

    perl -p -e 's/test/system/g|s/something/machine/g' test.yaml
    ---
    name: machine
      - system1
      - system2
      - system3
    
  • Get IP

     perl -e 'use LWP::Simple;use feature "say"; say get("https://cpanel.net/showip.shtml");'
    
  • Edit file in place by keeping original file in a backup

    perl -i.yaml-orig -pe 's/test/task - /gi' test.yaml
    
  • Replace hashtag and space with 2 hashtags

    perl -i.-cpbak -pe 's/^#\ /##/g' apache2.conf
    
  • Dns check oneliner

    perl -e 'use Net::DNS; my $resolver = Net::DNS::Resolver->new; my $query = $resolver->search("google.com"); foreach my $rr ($query->answer){print($rr->string,"\n");}'
    

get public ip with perl

/usr/local/cpanel/3rdparty/bin/perl -MData::Dumper -MCpanel::DIp::MainIP -e 'print Dumper(Cpanel::DIp::MainIP::getpublicmainserverip());'

canvas

Bios Machine type perl vm

/usr/local/cpanel/3rdparty/bin/perl -McPanel::BIOS -e 'use Data::Dumper; print Dumper(cPanel::BIOS::read_hypervisor_data(0));'
 /usr/local/cpanel/3rdparty/bin/perl -McPanel::BIOS -e 'use Data::Dumper; print Dumper(cPanel::BIOS::read_bios_data());'
/usr/local/cpanel/3rdparty/bin/perl -Iblib/lib -Iblib/arch -McPanel::BIOS -MData::Dumper::Concise -E 'say Dumper({cPanel::BIOS::read_bios_data()}); say Dumper({cPanel::BIOS::read_hypervisor_data(0)})'
find /home -type f -links +1 -printf "%i %n %p\n"

Perl inc print

/usr/local/cpanel/3rdparty/perl/542/bin/perl -e 'use feature say; foreach $module (@INC){say $module;}'
/usr/local/cpanel
/usr/local/cpanel/3rdparty/perl/542/cpanel-lib/x86_64-linux
/usr/local/cpanel/3rdparty/perl/542/cpanel-lib
/usr/local/cpanel/3rdparty/perl/542/lib/x86_64-linux
/usr/local/cpanel/3rdparty/perl/542/lib
/opt/cpanel/perl5/542/site_lib/x86_64-linux
/opt/cpanel/perl5/542/site_lib
  • Parse logs extract IP's
    perl -e 'while(<>){if(m/([0-9]+\.)([0-9]+\.)([0-9]+\.)([0-9]+)/){print $1,$2,$3,$4 ,"\n";}}' log_file.txt
    
  • Packman version
    /usr/local/cpanel/3rdparty/bin/perl -MCpanel::PackMan -E 'say $Cpanel::PackMan::VERSION'