\{test1: inc de batatas (o ficheiro batatas não existe... vamos ver o o que diz...) (((***** o FICHEIRO desapareceu 'batatas')))Nós, fartos de HTML, resolvemos:
- rifá-lo
- gerá-lo
HTML --> comando*
comando --> ID CHAV comando* CHAV
--> TEXT
#!/usr/bin/perl -s
use Text::RewriteRules;
use Data::Dumper;
our ($t);
use strict;
use warnings;
our %TAB;
our %TAB_ARGS;
undef $/;
my $N = qr{[A-Z]\w+};
my $A = qr{([a-zA-Z]\w*)};
my $B = qr{\{((?:\\\{|\\\}|[^\{\}])*)\}}; ## bloco {...\{...} {...{...\}.}}
while(<>){
if($t){ print head(), _loadit(h2(html($_))), foot();}
else { print _loadit(h2(html($_))); }
}
RULES html
\bperl$B=e=> do($1),$@ !! -f $1
\bperl$B==> (((***** o FICHEIRO desapareceu '$1')))
\b(\w+)$B=e=> $TAB{$1}->($2)!! defined $TAB{$1}
\binc$B=e=> `cat $1`!! -f $1
\binc$B==> (((***** o FICHEIRO desapareceu '$1')))
\b$A:$B==>__ATRIB__$1='$2'__ENDATRIB__
\b$A=$B=e=> savefun($1,$2,1),""
\b$A#(\d)=$B=e=> savefun($1,$3,$2),""
(\w+)$B==><$1>$2</$1>
<([^<>]*)>\s*__ATRIB__(.*?)__ENDATRIB__==><$1 $2>
$B=e=>_savit("{$1}")
ENDRULES
RULES/m h2
<vinc>(.*?)</vinc>=e=> bpre( protege( `cat $1` ))!! -f $1
<vinc>(.*?)</vinc>==> (((o FICHEIRO desapareceu '$1')))
ENDRULES
RULES/m protege
<==>\<
>==>\>
\&==>\&
ENDRULES
sub bpre{
my $a = shift;
$a =~ s/^\s*\n/\n/;
$a =~ s/\n\s*$/\n/;
_savit("<pre class='boxed'>$a</pre>");
}
sub savefun{
my ($n,$f,$i)=@_;
my @a= m/#(\d+)/g;
$i ||= (sort { <=> } @a)[-1];
$TAB_ARGS{$n}=$i;
$TAB{$n}=sub{
my $a=shift;
my $c = $f ;
$c =~ s/#1/$a/g;
$c};
}
sub head{
q{<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--/* <![CDATA[ */
<!--
hr { border: none; border-top: solid thin #f36e21; }
*.boxed { border: solid 1px #f36e21; margin: 6pt; padding: 6pt; }
*.orange { color: #f36e21; }
a { color: #d25c10; text-decoration: none; }
a:white { color: #ffffff; text-decoration: none; }
a:hover { color: #000; text-decoration: none; }
h1.newslide { background-color: #f9ce87; font-size: large;
color: #000; padding: 3px; margin-top: 400px; }
h1 { background-color: #f9ce87; font-size: large;
color: #000; padding: 3px; margin-bottom: 2px; }
h2 { background-color: #fbdea7; font-size: medium;
color: #000; padding: 3px; margin-bottom: 2px; }
h3 { background-color: #fbdea7; font-size: small;
color: #000; padding: 3px; margin-bottom: 2px; }
div.body { margin-left: 15px; margin-right: 15px; }
p { text-align: justify; }
/* for Boxml: */
table.box { border: solid 1px #000; margin: 1px; }
th.boxtitle { background-color: #548b8e;
color: #fff; border-bottom: solid 1px #000; }
*.tiny { font-size:small;}
-->
/* ]]> */-->
</style>
</head>
<body>
}}
sub foot{"</body></html>\n";}
my ($savit_n, %savit_p);
sub _savit{
my $a=shift;
$savit_p{++$savit_n}=$a ;
" __MARCA__$savit_n "
}
sub _loadit{
my $a = shift;
while( $a =~ s/ ?__MARCA__(\d+) ?/$savit_p{$1}/g){}
$savit_n = 0;
$a;
}
#!/usr/bin/perl
#undef $/;
#$/='';
my $N = qr{[A-Z]\w+};
while(<>){
chomp;
s/(.*) ($N)$/$2, $1/;
print "$_\n";
}
Escrever um programa perl que diga: vivo o nosso q p q n e a f c t b
#!/usr/bin/perl print "viva o n q p q n e a f c t b\n";
Escrever um programa perl que diga vivo o nosso querido prof. q n e a f c t b
#!/usr/bin/perl print "viva o n q p q n e a f c t b\n";
Última actualização Thu Jun 4 19:52:43 WEST 2009