Perl can make quite a useful addition to bash. Typically, sed would be used to massage strings; however, the regular expressions support in perl is more flexible. Say we have a directory with a bunch of files similar to this: [u-1@srv-1 ~/bp]$ ls april04stuff.html april14stf.html jl11stuff.html may12stf.html may13stf.html We decide that we want all files […]
Bashing Perl
Perl File Tests
There are quite a few simple file tests you can use while waltzing around your filesystem with perl. Here are a list of tests. Let’s run the test from the command line. To test if a file exists: srv-44 tmp # mkdir -p /tmp/perltest srv-44 tmp # cd /tmp/perltest srv-44 perltest # cat /dev/null > […]
Creating Date/Time Stamps With Perl
If you wish to use perl to create a date/time stamp, well, there are a few gotchas. We’ll show you one way to navigate the gotchas in this article. See this page for the technical details of the perl localtime function. Interestingly, we will focus on the date format of this very article. 🙂 This […]
Reading and Writing Files With Perl
Here is how you can use perl to read from one file and write to another: open(FILEREAD, “< file.read.name”); open(FILEWRITE, “> file.write.name”); while (<FILEREAD>){ print FILEWRITE; } close FILEWRITE; close FILEREAD; This will assign the file handle FILEREAD to the file file.read.name and start reading it in line by line in the while loop. The […]
Creating Calendars With Perl
In this article we created archived log files. Well, it would be nice to have a way to grab the daily log files off of an HTML document. Here is a perl script that does this: #!/usr/bin/perl for ($month=1;$month<13;$month++){ system(“cal -1 $month 2003 > calout”); open(CAL, “< calout”); print “<pre>”; while (<CAL>){ $last=$_; if($last=~/[A-Z]/){ if($last=~/\d\d\d\d/){ […]
Grabbing output of system commands with perl
I often have to snag the output of system commands and parse them with perl. Well, Urbana turned me on to a method of grabbing the output that is much easier than directing the output of the system command to a file and re-opening the file. Just use a pipe: #!/usr/bin/perl open (PINGTEST, “/bin/ping -c […]
Setting Passive Mode for Perl/CPAN
One problem with the default install of the CPAN shell is that if you need passive FTP to get through your firewall, the CPAN shell won’t work. Here is the behavior: . . . Invalid PORT. Retrying. –12:26:05– ftp://ftp.perl.org/pub/CPAN/authors/01mailrc.txt.gz (try: 8) => `-‘ Connecting to ftp.perl.org[192.35.244.50]:21… connected. Logging in as anonymous … Logged in! ==> […]
Archiving Files With Perl
Agatha had some complaints about her chicken cam. People weren’t seeing enough chicken booty. A quick and easy way to do this is to use Perl: while(6 ne 9){ for($c=1;$c<11;$c++){ system(“scp root\@crackers:/chickenpicture.jpg /home/u-1/chickencam”); system(“scp /home/u-1/chickencam/chickenpicture.jpg root\@signalq.com:/web/path/here/”); system(“scp /home/u-1/chickencam/chickenpicture.jpg root\@signalq.com:/web/path/here/archive/chickenpicture”.$c.”.jpg”); sleep 300; } } This way, the chicken cam cycles through. The only tricky part is […]
Compression of Text With Perl – Part 1
In this article I show how to use Perl to extract keywords from a text file, create an index of these keywords, and reassemble the text in a simplified way. This will give you compression, as well as control over stored data. I used The Snow Queen with the simplified character set of the Odyssey […]
Compression of Text With Perl – Part 2
In this article I showed how to extract keywords from a text file to create an index, and I reassembled the text again from the compressed file. In this article, I render the compressed file with a limited character set. Here is the code: %found = (); %index= (); $i=1; # this will grab 196 […]
Matching Hex Characters With Perl
You can match hex characters with \x. Just put \x before the hexadecimal number. For instance, if you wish to replace all backspace characters with nothing, use this: perl -pi -e “s|\x08||g” file.txt
Writing a Simple Filter With Perl
One cool thing you can do with perl is write a filter. We often tail various log files, but just want to know about specific bits. If we want to see more, we can look at the actual logs; however, for the purposes of the current activity, we don’t need much information. Say your logs […]
Installing The Net-SNMP Perl Module on Windows
There are restrictions on the crypt-des.ppd module that make it a rare beastie to find. When you try and install via ppm: ppm> install net-snmp Error: PPD for ‘Crypt-DES.ppd’ could not be found. After some searching, we did find the module at soulcage.net. The site seems legit, but do your own homework. To add the […]
Sending a Command Via TCP With Perl
To send a command via TCP with Perl, you can use IO::Socket::INET: use IO::Socket; my $sock = new IO::Socket::INET ( PeerAddr => ‘localhost’, PeerPort => ‘1001’, Proto => ‘tcp’, ); die “Error: $!\n” unless $sock; print $sock “commandtoexecute\n”; close($sock); This will send the command commandtoexecute to port 1001 on localhost or complain that there is […]
Converting File Extension to Lower Case With Perl
Let’s say that you have a bunch of references to files that take the format IMGblahx.JPG, but all of the files are actually IMGblahx.jpg. An example file would be named IMG_1807.JPG. To change all of the references to IMGblahx.JPG to IMGblahx.jpg, use this one line perl script: $ perl -pi -e “s|(IMG……)JPG|\$1jpg|g” * Put an […]
Installing Ruby and Rails on Mac OS X
Ruby and SQLite come with Mac OS X. Ruby is a bit older, and had some trouble installing Rails, so we ugraded: srv-8:~ usr4$ sudo port upgrade sqlite3 Password: —> Fetching ncursesw —> Attempting to fetch ncurses-5.7.tar.gz from http://mirrors.kernel.org/gnu/ncurses —> Verifying checksum(s) for ncursesw —> Extracting ncursesw —> Configuring ncursesw —> Building ncursesw —> Staging […]
Porting an Existing Static Database-derived Web Site to Ruby on Rails
[Note that this article is an experiment in hacking a Rails app in to static HTML off of a single root directory. This was done with routes.rb and some parsing of the URL within Rails. This is interesting in its own right, so we are leaving it up; however, a much better way is to […]
Moving from WEBrick to Mongrel
I’ve been moving more and more pages over to NetAdminTools, and the render time is starting to take a long time. => Booting WEBrick => Rails 2.3.4 application starting on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2010-07-20 06:29:17] INFO WEBrick 1.3.1 [2010-07-20 06:29:17] INFO ruby 1.8.7 (2009-12-24) [i686-linux] [2010-07-20 […]
Ruby Loops and ANSI Color
Here is a quick little script to illustrate loops and the Term-Ansicolor gem: require “rubygems” require “term/ansicolor” c = Term::ANSIColor print c.white,c.bold,c.on_blue print ” ” puts for w in [ “words”,”in”,”an”,”array” ] print ” “+w end print ” ” print c.reset print “\n” I originally made this because wanted to create a graphic with monospaced […]
Passenger Memory Stats
Use passenger-memory-stats while your app is loaded to see how your system handles your session settings. We use the –max-pool-size 50 option to limit the number of passenger sessions that connect to our RoR application. Here are the stats under load: root:/usr/local/bin# passenger-memory-stats ————- Apache processes ————- *** WARNING: The Apache executable cannot be found. […]