[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