Tips and Tricks With Perl

From Free Knowledge Base- The DUCK Project: information for everyone
Jump to: navigation, search

Put up a bunch of HTML without so many print statements...

   print <<end_html;
     <center>
     <h2>Text Heading</h2>
     </center>
 end_html

                     
  • note: The final end_html must begin in text column 1, fully left justified.

Perl has three predefined filehandles:

  • STDOUT - for standard output
  • STDIN - for standard input
  • STDERR - for error messages

Thus, print and printf functions by default use STDOUT filehandle to print to. Knowing the filehandle for standard input we can read everything user types just by using STDIN like usual file:

print "Please enter the file name: ";
chomp( $fname = <STDIN> );
printf(STDERR "You entered '%s'\n", $fname); 

The last line prints the confirmation to the standard output for error messages, which is by default the same as standard output.


Make the PC speaker "bell" sound

echo "^G";

The carrot-G cannot be typed literal, do the following: Press CTRL-V then CTRL-G


You can execute a line of Perl code from the command shell (from sh) without creating a Perl program script. Example:

 perl -e 'print "Hello World!\n"'

From sh to perl back to sh via backticks

 perl -e 'print `echo @ARGV`' a b c

Show the time and date in this format: 12:15 04/12/2008

 my $datestring = prettydate(); 
 print $datestring; 
 
 # usage: $string = prettydate( [$time_t] ); 
 # omit parameter for current time/date 
 sub prettydate { 
    @_ = localtime(shift || time); 
    return(sprintf("%02d:%02d %02d/%02d/%04d", @_[2,1], $_[4]+1, $_[3], $_[5]+1900)); 
 }

Different ways to clear the terminal screen

print "\033[2J";
print "\e[2J";
print `clear` , "\n";
system(($^O eq 'MSWin32') ? 'cls' : 'clear');
use Term::Screen;
my $terminal = new Term::Screen;
$terminal->clrscr();
use Curses;
initscr();
refresh();
print " " x 80*25;
print "\n" x 60;