tags:

views:

449

answers:

1

All,

I'm trying to get the code at the bottom to look like a check. Could you help me troubleshoot?

Thanks, Frank

format STDOUT = 
    @<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    $chkno            $chkno                                               
    $first                         $last                           
    $addr[0]                                                      
    $addr[1]                                                      
    $phone                         $date           

    Pay to the                                                    
    Order of: $payee      $amount         

    For: $memo                     Stamped Signature      

nova> perl proj3_3.pl
Use of comma-less variable list is deprecated at proj3_3.pl line 48.
Name "main::date" used only once: possible typo at proj3_3.pl line 24.
Name "main::last" used only once: possible typo at proj3_3.pl line 12.
Name "main::payee" used only once: possible typo at proj3_3.pl line 27.
Name "main::phone" used only once: possible typo at proj3_3.pl line 21.
Name "main::amount" used only once: possible typo at proj3_3.pl line 30.
Name "main::first" used only once: possible typo at proj3_3.pl line 9.
Name "main::memo" used only once: possible typo at proj3_3.pl line 33.
What is your Check Number? asdf
What is your First Name? asdf
What is your Last Name? adsf
What is your street address (i.e. 555 Anywhere St.)? asdf
What is your city, state, zip code (i.e. Los Angeles, CA, 90210)? as
What is your Phone Number? df
What is the Date? asdf
Who is the Payee? asd
What is the Check Amount? fa
What is the Check's Purpose (MEMO)? sdf
        asdf                                                     asdf
        $first                         $last
        $addr[0]
        $addr[1]
        $phone                         $date

        Pay to the
        Order of: $payee                           $amount

        For: $memo                     Stamped Signature
        .


format STDOUT_TOP =
--------------------------------------------------------------

Edit... Sorry, new to this. Here's my code:

#!/usr/bin/perl -w

use FileHandle

print "What is your Check Number? ";
chomp($chkno = <STDIN>);

print "What is your First Name? ";
chomp($first = <STDIN>);

print "What is your Last Name? ";
chomp($last = <STDIN>);

print "What is your street address (i.e. 555 Anywhere St.)? ";
chomp($addr[0] = <STDIN>);

print "What is your city, state, zip code (i.e. Los Angeles, CA, 90210)? ";
chomp($addr[1] = <STDIN>);

print "What is your Phone Number? ";
chomp($phone = <STDIN>);

print "What is the Date? ";
chomp($date = <STDIN>);

print "Who is the Payee? ";
chomp($payee = <STDIN>);

print "What is the Check Amount? ";
chomp($amount = <STDIN>);

print "What is the Check's Purpose (MEMO)? ";
chomp($memo = <STDIN>);

#print "? ";
#chomp($ = <STDIN>);
#print "? ";
#chomp($ = <STDIN>);

# @>>>> right-justified
#   @|||| centered
#   @####.## numeric field holder
#   @* multiline field holder

# now this line format will automatically apply to CHECK
format STDOUT = 
    @<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    $chkno            $chkno                                               
    $first                         $last                           
    $addr[0]                                                      
    $addr[1]                                                      
    $phone                         $date           

    Pay to the                                                    
    Order of: $payee      $amount         

    For: $memo                     Stamped Signature          
    .


# and this page header format will automatically apply to CHECK
format STDOUT_TOP =
--------------------------------------------------------------
.   

write STDOUT; #send to the output
+4  A: 

Formats consist of a format line followed by the variables that go in that line (comma separated):

#!/usr/bin/perl

use strict;
use warnings;

our $first      = "Chas.";
our $last       = "Owens";
our $chkno      = "123456";
our @addr       = ("123 Nowhere Lane", "Citysville, Townshire, 12345");
our $phone      = "123-456-7890";
our $date       = "2009-08-10";
our $payee      = "Stack Overflow";
our $amount     = "0.02";
our $amount_str = "no dollars and two cents";
our $memo       = "my two cents worth";

write;    

format STDOUT = 
 @<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<  @>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
 $first,        $last,             $chkno
 @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 $addr[0]
 @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<        Date:
 $addr[1]
 @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<        @<<<<<<<<<<<<<<<<<<<<<<<
 $phone,                                 $date

Pay to the
Order of:  @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  @#######.##
           $payee,                                    $amount 
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< dollars
$amount_str
                                        Signature
Memo: @<<<<<<<<<<<<<<<<<<<<<<<<<<<      _________________________         
      $memo
.

That said, formats have some really bad drawbacks and you should really use a different solution. Another option is to use Perl6::Form. It is a backport of the draft of formats for Perl 6:

#!/usr/bin/perl

use strict;
use warnings;

use Perl6::Form;

my $first      = "Chas.";
my $last       = "Owens";
my $chkno      = "123456";
my @addr       = ("123 Nowhere Lane", "Citysville, Townshire, 12345");
my $phone      = "123-456-7890";
my $date       = "2009-08-10";
my $payee      = "Stack Overflow";
my $amount     = "0.02";
my $amount_str = "no dollars and two cents";
my $memo       = "my two cents worth";

print form 
 "{<<<<<<<<<<<<<} {<<<<<<<<<<<<<<<<}  {>>>>>>>>>>>>>>>>>>>>>>>>>>>>>}",
 $first,        $last,             $chkno,
 "{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<}",
 $addr[0],
 "{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<}        Date:",
 $addr[1],
 "{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<}        {<<<<<<<<<<<<<<<<<<<<<<<}",
 $phone,                                 $date,
 "",
"Pay to the",
'Order of:  {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<}  ${>>>>>>>.<<}',
            $payee,                                     $amount,
"{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} dollars",
$amount_str,
"                                        Signature",
"Memo: {<<<<<<<<<<<<<<<<<<<<<<<<<<<}      _________________________",
       $memo;
Chas. Owens
Hey, are you *also* from Citysville, Townshire? How's it goin', neighbor?
Nathan Fellman
Chas,You have been a great help! Can you help me add user input? The assignment asked for the following:Write a program that will generate a check. The check should be printed to screen as it appears in the attached file (check.txt). Your program must prompt the user to input the information below. Assign the user data to the scalar and array variables, all presented below. You must use formats to print the check as it appears, which includes the line box surrounding the check items.
@Frank that sounds suspiciously like homework or an interview question. I would suggest reading the format documentation (see the link in the answer or `perldoc perlform`).
Chas. Owens