[bcn-pm] Problemilla con script
Alex Muntada
alexm at cpan.org
Fri Feb 11 02:15:38 PST 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
* TooManySecrets <toomany at toomany.net>:
[2005-02-11 10:57:20 +0100]
> El vie, 11-02-2005 a las 10:24 +0100, Juan Julian Merelo Guervos
> escribió:
> > A ver si lo entiendo: hay variables con $ que no quieres que te
> > interprete, y otras que quieres que te interprete?
> >
> > De todas formas, puedes poner un
> > no strict vars;
> > para que no se queje de eso.
>
> Osea, que podría dejar el "print FILE <<EOF" así, tal cual, sin poner
> entre comillas simples el "EOF" para que no me interprete y no se
> quejaría de ello... Espléndido...
Podries però el resultat final no serà el que tu vols. Si ho
hagués de fer jo, preferiria una solució més neta i te'n proposo
dues (evidentment, en Perl TMTOWTDI):
1) Divideix el fitxer de sortida en blocs en què necessitis
interpolació de variables i en d'altres que no. Per exemple:
my $AIXO = "valor1";
my $ALLO = "valor2";
print <<'EOF';
#
# $Id: ...
#
EOF
print <<EOF;
Vull canviar $AIXO per $ALLO.
EOF
2) Enlloc d'utilitzar la interpolació de variables, utilitza
una expressió regular de substitució amb una marca que
defineixis tu mateix:
my %valors;
$valors{AIXO} = "valor1";
$valors{ALLO} = "valor2";
my $sortida = <<'EOF';
#
# $Id: ...
#
Vull canviar ==AIXO== per ==ALLO==.
EOF
$sortida =~ s/==(\w+)==/$valors{$1}/eg;
- --
Alex Muntada <alexm at alexm.org>
http://alexm.org/
-----BEGIN PGP SIGNATURE-----
iD8DBQFCDIXDLdxCGS3zaBERAlp+AJ9WFYa2eXxO+2RFROXZOf2NgPZmuQCgzert
fqQkVi4+U2R5nwS+KLAuSCg=
=gDG2
-----END PGP SIGNATURE-----
More information about the Barcelona-pm
mailing list