Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Skeeve

by Skeeve (Parson)
on Apr 29, 2003 at 07:28 UTC ( [id://253915]=user: print w/replies, xml ) Need Help??

The image was created using South Park Studio and Gimp.

I was introduced to the monastry by physi. He was my boss in a project.

I picked my name from Robert Asprin's books about M.Y.T.H. Inc. which I really love.

Useful Character Set information: [https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/]

perlmonk nodes I often use:

My perl skeleton

#!/usr/bin/perl use strict; use warnings; use Getopt::Long qw(:config no_ignore_case); use Pod::Usage; my ( # options $verbose, $debug, $file, @columns, ); $file= 'default.txt'; help() unless GetOptions( 'v' => \$verbose, 'verbose!' => \$verbose, 'debug+' => \$debug, 'file=s' => \$file, 'c|column=i' => \@columns, 'h|help' => \&help, 'm|man' => \&man, ); sub help { pod2usage(-verbose=>1); } sub man { pod2usage(-verbose=>2); } print "OKAY\n"; # Program goes here... =head1 NAME Getopt::Long / Pod::Usage skeleton =head1 SYNOPSIS skeleton.pl [options] =head1 DES‎CRIP‎TION This is a skeleton I use when creating a new perl s‎crip‎t =head1 OPTIONS =over 4 =item B<-v> verbose outoput =item B<-d> =item B<-debug> debug mode =item B<-file> F<filename> specify the file to work with =back =head1 BUGS none yet =head1 TODO much =cut

Things I might need (again) in the future:
  • mkdir -p
    use File::Basename; mkdir_p("some/long/path"); sub mkdir_p { return ((-d $_[0]) or (mkdir_p(dirname $_[0]) and mkdir $_[0], 075 +5)); }
  • IP v4 address manipulations
    #!/usr/bin/perl use strict; use warnings; use Socket; my $ifconfig='/usr/sbin/ifconfig'; # run ifconfig -a open my $if, '-|', "$ifconfig -a" or die "Couldn't run $ifconfig: $!\n +"; while (<$if>) { # find a line with "broadcast" in it # on Solaris this contains all the information I need next unless /inet\s+(.*?)\s+netmask\s+(.*?)\s+broadcast\s+(.*? +)\s*$/; # keep ip address as it is (a dotted string) my $iaddr= $1; # convert the netmask to a "long" my $netmsk= hex "0x$2"; # dito for the broadcast my $brdcst= unpack 'N', inet_aton $3; # How many bits does the netmask have? my $bits= 31-int(log(0xffffffff ^ $netmsk)/log(2)); # Convert the netmask to a "slashed" IP my $network= inet_ntoa(pack "N", ($brdcst & $netmsk)) . "/" . +$bits; # show all info found print "$iaddr\t$network\n"; } close $if;
  • Reverse DNS Lookup
    use Socket; my ($name,$aliases,$addrtype,$length,@addrs) = gethostbyaddr(inet_aton +("74.125.79.94")); print $name,$/;
  • Building perl on Solaris with gcc
    • make sure /usr/ccs/bin is not in the path
    • make sure make is in the path for "make test" e.g. by
      ln -s /usr/ccs/bin/make /usr/local/bin
  • Building perl DBI (on Solaris) with gcc
    perl Makefile.PL CC=gcc LD=gcc CCCDLFLAGS=-fPIC OPTIMIZE=-O3
    This is not necessary if you build your own perl as above in which case the normal process will work.
  • Building DBD::mySQL ...
    make sure .../mysql/bin is in your path
  • CSV splitting without modules
    sub csvsplit { my (@result); for ($_[0]) { s/[\015\012]+$//; while (s/^"((?:[^"\\]|\\.)*)"// || s/^'((?:[^'\\]|\\.)*)'// || + s/^([^,]*)//) { push(@result, $1); last unless s/^,//; } } return @result; }

bit-vec for more than 31 bits.

my $vec = []; sub setBit { my($vec, $offset, $val)= @_; my $index= $offset >> 31; my $subset= $offset & 0x7fffffff; $vec->[$index]||=''; vec($vec->[$index], $subset, 1)= ($val & 1); } sub getBit { my($vec, $offset)= @_; my $index= $offset >> 31; my $subset= $offset & 0x7fffffff; $vec->[$index]||=''; return vec($vec->[$index], $subset, 1); }
my old signatures
  • $\=~s;s*.*;q^|D9JYJ^^qq^\//\\\///^;ex;print
  • s$$([},&%#}/&/]+}%&{})*;#$&&s&&$^X.($'^"%]=\&(|?*{%.+=%;.#_}\&"^"-+%*).}%:##%}={~=~:.")&e&&s""`$''`"e

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (3)
As of 2025-03-24 14:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    When you first encountered Perl, which feature amazed you the most?










    Results (64 votes). Check out past polls.

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.