in reply to format issues

and it don't even run under strict, what I'm missing here ?

You are missing that the ~~ tells to repeat shifting @f1 even after it is empty. Trying to build yet another line after the third, shift @f1 returns an undefined value, which then - alas, cannot be dereferenced.

One solution:

my $foo = [('') x 9]; format = +-----------------------+ | @ @ @ | @ @ @ | @ @ @ |~~ @{ shift @f1 || $foo } |-------+-------+-------| | @ @ @ | @ @ @ | @ @ @ |~~ @{ shift @f2 || $foo } |-------+-------+-------| | @ @ @ | @ @ @ | @ @ @ |~~ @{ shift @f3 || $foo } +-----------------------+ . write;

You could also push the array reference filled with empty elements ($foo) onto @f1, @f2 and @f3.

my $foo = [('') x 9]; push @$_, $foo for \@f1,\@f2,\@f3; format = +-----------------------+ | @ @ @ | @ @ @ | @ @ @ |~~ @{shift @f1} |-------+-------+-------| | @ @ @ | @ @ @ | @ @ @ |~~ @{shift @f2} |-------+-------+-------| | @ @ @ | @ @ @ | @ @ @ |~~ @{shift @f3} +-----------------------+ . write;

Replies are listed 'Best First'.
Re^2: format issues
by Fox (Pilgrim) on Dec 04, 2009 at 16:07 UTC
    I see, thanks !

    so ~~ stops when there is a empty line right ? something like :
    @f1 = ($foo,$m[0],$m[1],$m[2]);
    won't get printed at all,

      Yes. From perlform:

      ~~ repeat line until all fields are exhausted

      Note: fields, not container of field arrays.