in reply to To format or not?

You can still use formats even without named file handles.

The 'name' refered to when talking about formats is the name of the format itself -- you can declare a format (or a pair of formats since they're designed to have a seperate 'top' format for the beginings of pages) and then associate that format to any filehandle you 'select'

This should help get you started...

#!/usr/bin/perl use warnings; use strict; sub doWrite { my ($fh, $label, $count, $text) = @_; format DO_WRITE_FORMAT = @<<<<< @>>>> ^<<<<<<<<<<<<<<<<<<<<<<<<<<< $label,$count,$text ~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<< $text . select((select($fh), $~ = "DO_WRITE_FORMAT" )[0]); write $fh; } doWrite(\*STDOUT, "L1", 4567, "the quick brown fox jumped over the lazy fatass dog."); doWrite(\*STDERR, "L222", 12, "the large bulky dog ate the snippetty hyperactive fox.");

Replies are listed 'Best First'.
Re: Re: To format or not?
by John M. Dlugosz (Monsignor) on Feb 16, 2004 at 17:33 UTC
    This should help get you started...

    Yes, thanks a lot.

    So, are the parameter lines remembered as text and evaluated at the point write is called, or does it form a closure where the format is defined?

      So, are the parameter lines remembered as text and evaluated at the point write is called, or does it form a closure where the format is defined?

      Eh... now we're getting into a grey error that I'm not really sure of. I think the variables in the format need to be declared prior to declaring the format, but they get evaluated each time write is called. I'm not sure if that's done using dynamic scoping or not.

      In your use case, declaring the format inside your method is probably the cleanest thing to do.