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
Line 37: Line 37:
 
From sh to perl back to sh via backticks
 
From sh to perl back to sh via backticks
 
   perl -e 'print `echo @ARGV`' a b c
 
   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>
  
 
----
 
----

Revision as of 10:29, 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)); 
 }