2010-04-08 4 views
7

J'avais lu quelque part au sujet d'une caractéristique spécifique qui est présente dans awk mais pas dans Perl. J'ai échoué à le localiser à nouveau.Que puis-je faire en utilisant awk que je ne peux pas faire en Perl?

J'apprécierais si quelqu'un ici peut le signaler.

Cela pourrait être un trivia inutile, mais je suis toujours curieux de savoir.

+1

La question serait plus intéressante dans la forme: Qu'est-ce qui est possible de faire plus facile dans awk. ;) – jm666

+0

@ jm666 n'hésitez pas à modifier – alvin

Répondre

18

De perldoc perlvar:

Souvenez-vous: la valeur de $/ est une chaîne, pas une expression régulière. awk doit être mieux pour quelque chose. :-)

+1

vous pouvez toujours faire 'split/regex/=> do {local $ /; <>} 'tant que votre fichier peut entrer dans la mémoire –

+0

Retour dans la journée, j'ai écrit File :: Stream (sur CPAN) pour résoudre ce" problème ". :) – tsee

+2

exactement la chose que je cherchais. Je serai capable de dormir profondément à partir de maintenant. :) – alvin

8

Le awk pour perl Traducteur man page déterre une chose que Perl ne peut pas faire:

  • Perl ne tente pas d'imiter le comportement de awk dans lequel les éléments de tableau inexistants jaillir simplement en étant référencé. (autovivification lvalue)

Mais en général, Perl est complet, il peut faire tout ce que awk peut faire. Le fait qu'un awk vers perl traducteur existe devrait être une preuve suffisante :)

+0

hmmm, c'est intéressant. – alvin

-2

expression régulière comme des sous-routines

/regex/ { 
     awk code here 
} 

pour la correspondance de motif est une fonctionnalité que je manque de awk.

+0

Vous n'êtes pas sérieux, non? if (/ regex /) {code perl ici} – Sean

+0

/$ regexp/et do {...}; – dsm

+0

'{Code Perl ici} si/regex /' –

Questions connexes