- 论坛徽章:
- 7
|
本帖最后由 rubyish 于 2013-04-01 05:46 编辑
是 ma ?
- #!/usr/bin/perl
- sub table {
- my %i = ( @_, @_ % 2 ? 0 : () );
- my @dat = @{ $i{data} || shift };
- my $p = $i{align} // 0;
- my %T = (
- t => [ qw(┌ ┬ ┐) ],
- m => [ qw(├ ┼ ┤) ],
- b => [ qw(└ ┴ ┘) ],
- h => '─', v => '│'
- );
- my $l = 0;
- map $l < $_ && ( $l = $_ ), map length, map @$_, @dat;
- my $e = scalar @{ $dat[0] };
- my ( $ht, $hm, $hb ) = map {
- $T{$_}[0] . join( $T{$_}[1], ( $T{h} x ( $l + 2 ) ) x $e ) . "$T{$_}[2]\n";
- } qw/t m b/;
- my $al = sub { map { my $s = $" x ( 1 + $l - length ); $p ? "$s$_ " : " $_$s" } @_ };
- my $text = sub { $T{v} . join( $T{v}, $al->(@_) ) . "$T{v}\n" };
- $ht . join( $hm, map $text->(@$_), @dat ) . $hb;
- }
- my @a = map [split], <DATA>;
- print table \@a;
- print table data => \@a, align => 1;
- print table data => \@a';
- __DATA__
- Abidjan Banjul Conakry Harare
- Accra Bissau Dakar Johannesburg
- Addis_Ababa Blantyre Dar_es_Salaam Juba
- Algiers Brazzaville Djibouti Kampala
复制代码 |
|