Difference between revisions of "Tips and Tricks With Perl"

From Free Knowledge Base- The DUCK Project: information for everyone
Jump to: navigation, search
m
m
 
(2 intermediate revisions by one user not shown)
Line 32: Line 32:
  
 
----
 
----
 +
 +
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
 +
 +
  <nowiki>my $datestring = prettydate(); </nowiki>
 +
  <nowiki>print $datestring; </nowiki>
 +
  <nowiki></nowiki>
 +
  <nowiki># usage: $string = prettydate( [$time_t] ); </nowiki>
 +
  <nowiki># omit parameter for current time/date </nowiki>
 +
  <nowiki>sub prettydate { </nowiki>
 +
  <nowiki>  @_ = localtime(shift || time); </nowiki>
 +
  <nowiki>  return(sprintf("%02d:%02d %02d/%02d/%04d", @_[2,1], $_[4]+1, $_[3], $_[5]+1900)); </nowiki>
 +
  <nowiki>}</nowiki>
 +
 +
----
 +
 +
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;
  
 
&nbsp;
 
&nbsp;

Latest revision as of 09:50, 13 April 2008

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;