Report Perl

open(FH, "datebook") or die;  # Open a file for reading
open(SORT, "|sort") or die;   # Open a pipe to sort output
$field1="<" x 18;  # Create format strings
$field2="<" x 12;
$field3="|" x 10;
$field4="#" x 6 . ".##";
# Create the format template
$format=qq(
  format SORT=
    \@$field1\@$field2\@$field3\@$field4
    \$name, \$phone, \$birth, \$sal
  .
);
eval $format;
while(){
    ($name,$phone,$address,$birth,$sal)=split(":");
    ($first, $last)=split(" ", $name);
    $name=$last.", ". $first;
    write SORT;
}
close(FH);
close(SORT);