It's a big ugly, but you can use select and $~ to change the format for a given filehandle. See perlform for more info. In the meantime, here is a brief example:
use strict;
use warnings;
open( my $outfh, '>', 'temp.txt' ) or die $!;
my ( $var1, $var2 ) = ( 'one', 'two' );
my $oldfilehandle = select $outfh;
$~ = "FORMAT1";
select $oldfilehandle;
write $outfh;
$oldfilehandle = select $outfh;
$~ = "FORMAT2";
select $oldfilehandle;
write $outfh;
$oldfilehandle = select $outfh;
$~ = "FORMAT1";
select $oldfilehandle;
write $outfh;
format FORMAT1 =
@<<<<< @<<<<<
$var1, $var2
.
format FORMAT2 =
@<<<<<XXX@<<<<<
$var2, $var1
.
close $outfh;
And the output file:
one two
two XXXone
one two