Firmas aleatorias (era Re: Programar en Linux)
Alvaro Herrera
alvherre en alvh.no-ip.org
Lun Oct 23 13:40:36 CLST 2006
Rodrigo Fuentealba escribió:
> >--
> >Alvaro Herrera Valdivia, Chile ICBM: S 39º 49' 18.1", W 73º 13'
> >56.4"
> >"You knock on that door or the sun will be shining on places inside you
> >that the sun doesn't usually shine" (en Death: "The High Cost of Living")
> >
>
> OT: ¿cómo haces para poner un fortune/frase distinta en tu mail?
Con este programa, que escribi hace varios an~os, y un par de archivos
de datos. Por ej. el "headers" es asi:
1 Alvaro Herrera Valdivia, Chile ICBM: S 39º 49' 18.1", W 73º 13' 56.4"
2 Alvaro Herrera Developer, http://www.PostgreSQL.org
3 Alvaro Herrera http://www.amazon.com/gp/registry/5ZYLFMCVHXC
4 Alvaro Herrera http://www.advogato.org/person/alvherre
5 Alvaro Herrera http://www.PlanetPostgreSQL.org
6 Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
7 Alvaro Herrera http://www.amazon.com/gp/registry/DXLWNGRJD34J
y el archivo "sigs" es asi:
51 "Use it up, wear it out, make it do, or do without"
52 Hi! I'm a .signature virus!
52 cp me into your .signature file to help me spread!
53 "La gente vulgar solo piensa en pasar el tiempo;
53 el que tiene talento, en aprovecharlo"
54 "Puedes vivir solo una vez, pero si lo haces bien, una vez es suficiente"
Los numeros deben ser correlativos, sin agujeros en la numeracion, y
deben ir seguidos de un tab. El programa permite escoger distintos
"sigs" y "headers" dependiendo del "rol" que escoges. Es bien low-tech
:-) Una vez quise hacer un reemplazo en C pero al final me dio lata :-)
Cuando quiero agregar una nueva frase (cosa que pasa de vez en cuando)
uso este otro programa:
#!/usr/bin/perl -w
$HOME = $ENV{"HOME"};
$SIGS = "$HOME/FIRMAS/sigs";
$index = 0;
$index = `tail -1 $SIGS 2>/dev/null | awk '{ print \$1}' ` + 1;
print STDERR "Agregando signature numero $index\n";
while (<STDIN>)
{ push @A, $_; }
open(SIG, ">> $SIGS");
foreach (@A)
{ print SIG "$index\t$_"; }
close(SIG);
Este creo que lo escribio Aldrin Martoq, no me acuerdo.
--
Alvaro Herrera http://www.amazon.com/gp/registry/DXLWNGRJD34J
"El número de instalaciones de UNIX se ha elevado a 10,
y se espera que este número aumente" (UPM, 1972)
------------ próxima parte ------------
#!/usr/bin/perl -w
$HOME = $ENV{HOME};
$role = $ARGV[0] if defined $ARGV[0];
if (!defined $role || $role eq 'default') {
$SIGFILE = "$HOME/FIRMAS/sigs";
$HEADERS = "$HOME/FIRMAS/headers";
} elsif ($role eq 'cmd') {
$HEADERS = "$HOME/FIRMAS/cmd-headers";
} else {
die "Unrecognized role";
}
print "\n\n-- \n";
print leeAleatoria("$HEADERS") if defined $HEADERS;
print leeAleatoria("$SIGFILE") if defined $SIGFILE;
exit;
sub leeAleatoria {
my $file = shift;
my $index;
my $rnd;
my $str = "";
$index = `tail -1 $file 2>/dev/null| awk '{print \$1}'` + 0;
$rnd = int($index * rand) + 1;
open(A, "grep '^$rnd ' $file |");
while (my $line = <A>) {
if ($line =~ /^(\d+)\t(.*)$/) {
$str .= $2."\n";
}
}
return $str;
}
Más información sobre la lista de distribución Linux