Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Re: Question on format statement

by afoken (Chancellor)
on Aug 03, 2010 at 12:38 UTC ( [id://852650]=note: print w/replies, xml ) Need Help??

in reply to Question on format statement

Whitespace. Quoting perlform:

A single "." in column 1 is used to terminate a format.


Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

Replies are listed 'Best First'.
Re^2: Question on format statement
by perl_seeker (Scribe) on Aug 05, 2010 at 12:44 UTC

    It was the space before "." causing the problem. Putting it in the 1st column solved the problem. Thanks a lot everyone.

    perl seeker


    I however want to ask another question regarding the code. Is it possible to use several other conditional checks (if statements) to write separate blocks, of data onto the output .doc file? Using the same code I mean. Putting another if statement inside the for loop does not work and the output data rows get mixed up. For example:
    $sub1='FB'; $tow1='RP'; $ph3='3'; if (($subdvn eq $sub1) && ($tow eq $tow1) && ($phase eq $ph3)) { write(FS); $fb_rp_3_tot += $amount; $fbqty3 = $fbqty3 + 1; }
    Is there something like a case statement in Perl? Any help would be appreciated.


      I'm not quite sure what you're asking here. But for a case statement, I just use the simple tried and true:

      if ('foo' eq $val) { # process case 1 } elsif ('bar' eq $val or 'baz' eq $val) { # process case 2 } elsif ('boom' eq $val) { # process case 3 } else { print "Unexpected value '$val'!\n"; }

      Just add elsif blocks as needed. Not as "pretty" as a switch/case statement in other languages, but it's simple and clear.

      The way your question is phrased makes me think you might have meant "how do you use different format statements within a page?". To do that, you do something like:

      use FileHandle; format foo_rec = FOO @>>>>>>> $flds[3] . format dflt_rec = @<<<<<<< @>>>>>>> @>>>>> @>>>>> $flds[2] $flds[3] $flds[5] $flds[9] . while (<FH>) { my @flds = split /\|/, $_; if ($flds[0] eq 'foo') { format_name FS "foo_rec"; write FS; } else { format_name FS "dflt_rec"; write FS; } }


Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://852650]
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (4)
As of 2024-05-29 18:45 GMT
Find Nodes?
    Voting Booth?

    No recent polls found