Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
[Actualités]
Les Technos #469 : Un jour sans fin
[Actualités]
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des perfor...
[Actualités]
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
[Actualités]
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 ser...
[Actualités]
Windows 10 version 22H2 : erreur de mise à jour et de désinstallation
[Actualités]
OpenAI prépare désormais son propre navigateur
[Actualités]
WhatsApp bat Telegram : les transcriptions des messages vocaux arrivent pour tou...
[Actualités]
Unreal et Unreal Tournament désormais gratuits sur Internet Archive
[Actualités]
Windows 10 : Microsoft affiche des publicités en plein écran pour les PC équi...
[Articles]
Dungeons 4 - Nintendo Switch Edition
[Articles]
The Bridge Curse 2 : The Extrication
[Articles]
Farmagia
[Articles]
I*CHU: Chibi Edition
[Articles]
Farming Simulator 25
[Articles]
Goblin Slayer -Another Adventurer- Nightmare Feast
[Articles]
Deel lance des programmes en marque blanche et pour les revendeurs pour plus de ...
[Articles]
ESET Research : WolfsBane, nouvelle porte dérobée de cyber-espionnage Linux cr...
[Articles]
Devoteam présente son nouveau plan stratégique « AMPLIFY » avec un fort acce...
[Articles]
LEGO Horizon Adventures
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
.de Sh " Subsection heading [b][/b] .if t .Sp .ne 5 [b][/b]$1 [size=18] [b]Nom[/b] [/size] a2p - Traduteur de commande Awk à Perl [size=18] [b]Résumé[/b] [/size] .IX Header "SYNOPSIS" &[b]a2p[/b] [options] nom de fichier [size=18] [b]Description[/b] [/size] .IX Header "DESCRIPTION" &[i]A2p[/i] prend un script awk spécifié en ligne de commande (ou depuis l'entrée standard) et produit un script [i]perl[/i] comparable sur la sortie standard. [size=18] [b]Options[/b] [/size] .IX Subsection "Options" Options incluses : "[b][/b]-D
" 5 [table][row][col] [/col][col].IX Item "-D
" Initialise les variables de déboguage.[/col][/row][/table] "[b][/b]-F
" 5 [table][row][col] [/col][col].IX Item "-F
" Dit à a2p que ce script awk est toujours appelé avec le paramètre [b][/b]-F.[/col][/row][/table] "[b][/b]-n
" 5 [table][row][col] [/col][col].IX Item "-n
" Spécifie les noms de champs d'entrée si l'entrée n'a pas été « mappée » dans un tableau. Si vous traduisiez un script awk qui traite le fichier de mot de passe, vous devriez écrire : .Sp .Vb 1 & a2p -7 -nlogin.password.uid.gid.gcos.shell.home .Ve .Sp N'importe quel délimiteur peut être utilisé pour séparer les noms des champs.[/col][/row][/table] "[b][/b]-
" 5 [table][row][col] [/col][col].IX Item "-
" Dit à a2p que l'entrée aura toujours ce nombre de champs.[/col][/row][/table] "[b][/b]-o" 5 [table][row][col] [/col][col].IX Item "-o" Dit à a2p d'utiliser un comportement d'une ancienne version de awk. Les seules différences courantes à ce jour sont :[table][row][col] [/col][col][/col][/row][/table] "*" 5 [table][row][col] [/col][col]Les anciennes versions awk ont une boucle de ligne, même si il n'a a aucune action dans la ligne, tandis que la nouvelle version de awk n'en a pas.[/col][/row][/table] "*" 5 [table][row][col] [/col][col]Dans les anciennes versions de awk, sprintf est extrêmement avide de ses arguments. Par exemple, voici une déclaration .Sp .Vb 1 & print sprintf(some_args), extra_args; .Ve .Sp Les anciennes versions de awk considèrent que les [i]extra_args[/i] sont des arguments de f(CW*(C`sprintf*(C'; les nouvelles versions de awk considèrent ces mêmes arguments comme appartenant à f(CW*(C`print*(C'.[/col][/row][/table][table][row][col] [/col][col][/col][/row][/table] .ie n .Sh """Considerations""" .el .Sh "``Considerations''" .IX Subsection "Considerations" A2p ne peut pas faire un travail de traduction aussi bien qu'un humain, mais il le fait souvant pas mal. Il y a des endroits où vous devriez examiner le script Perl produit et le modifier un peu. Voici certains d'entre eux, sans ordre particulier.[/col][/row][/table] Il y a une façon de faire en awk pour forcer une interprétation numérique en entourant une expression de chaine de caractères avec [i]int()[/i], bien que l'argument soit toujours un entier de toute façon. Cela n'est pas nécéssaire en Perl, mais a2p ne peut pas dire si l'argument doit toujours continué d'être un entier, donc il le laisse tel quel. Vous pouvez vouloir l'enlever. Perl différencie les comparaisons numériques des comparaisons de chaîne de caractères. Awk a un opérateur pour les deux et décide au moment de l'exécution (run time) quel type de comparaison faire. A2p n'essaie pas de faire un travail complet d'émulation à ce stade. Au lieu de cela il suppose lequel vous voulez. C'est presque toujours bon, mais il peut se tromper. Tout ce qui est le résultat d'une supposition est marqué avec des commentaires. "f(CW*(C`#???*(C'". Vous devriez passer pour les vérifier. Vous devriez lancer au moins une fois avec le paramètre [b][/b]-w de Perl, lequel vous avertira si vous utilisez == au lieu d'utiliser eq. Perl n'essaie pas d'imiter le comportement d'awk dans lequel des éléments de tableau inexistants apparaissent brusquement simplement en y faisant référence. Si, d'une façon ou d'une autre, vous comptez sur ce mécanisme pour créer des entrées nulles pour un traitement postérieur pour... dedans, il ne seront pas présent dans Perl. Si a2p découpe une ligne et l'assigne a une liste de variables qui ressemble à (Fld1, Fld2, Fld3...) vous devriez relancer a2p en utilisant l'option &[b][/b]-n mentionnée ci-dessus. Cela vous laissera nommer les champs partout dans le script. Si ça vous découpe la ligne en tableau, le script se réfère probablement à un nombre de champs quelque part. Le statut de fin dans awk n'est pas forcément la fin du script ; il va au bloc s-1ENDs0 s'il y en a un. Les scripts awk qui contorsionnent dans le bloc s-1ENDs0 pour contourner ce même bloc peuvent être simplifiés dans de telle circonstance en enlevant la condition dans le bloc s-1ENDs0 et juste en sortant directement du script Perl. Perl a deux sortes de tableaux, les numériques indexés et les associatifs. Les tableaux associatifs de Perl sont appellés *(L"hashes*(R". Les tableaux Awk sont souvent traduient en « hashes », mais s'il vous arrive de savoir qu'un index sera toujours de type numérique, vous pourriez changer les {...} par des [...]. Les itérations sur un tableau de type « hashes » sont faites en utilisant la fonction [i]keys()[/i], mais les itérations sur un tableau numérique sont s-1NOTs0. Vous devriez avoir besoin de modifier chacune des boucles qui réitère sur ce type de tableau. Awk commence par supposer que s-1OFMTs0 a la valeur %.6g. Perl commence par supposer que sont équivalent, $#, à la valeur %.20g. Vous pourriez vouloir initialiser explicitement $# si vous utilisez la valeur par défaut de s-1OFMTs0. Près du début de la ligne de boucle seront découpées les opérations qui sont implicites dans le script Awk. Il y a des fois, quand vous pouvez déplacer ces opérations plus bas, les conditions qui testent entièrement l'enregistrement entraînent un découpage différent de ce qui est fait d'habitude. Pour des raisons esthétiques vous pourriez vouloir changer la base d'un tableau $[ à 1 au lieu de la valeur 0 qui est celle par défaut dans Perl, mais souvenez vous de changer tous les indices de tableau s-1ETs0 tous les [i]substr()[/i] et les opérations [i]index()[/i] pour que cela corresponde. On passe les commentaires qui disent *(L"# Here is a workaround because awk is dumb*(R",ca reste inchangé. les scripts Awk sont souvent incorporés dans des scripts en Shell qui « tunnelisent » les informations entrantes et sortantes de Awk. Souvent l'emballage de script Shell peut être incorporé dans le script Perl, depuis que Perl peut démarrer en se « tunnelisant » lui-même, et peut faire d'autres choses que awk ne peut pas faire lui-même. Les scripts qui font référence aux variables spéciales s-1RSTARTs0 et s-1RLENGTHs0 peuvent souvent être simplifiés en faisant référence aux variables $`, $& et $', tant qu'elles sont dans les limites du modèle qui les a initialisées. Le script Perl produit peut avoir des sous-routines définies pour traiter les sémantiques awk quant aux impressions et les commandes de saisies. Depuis a2p choisit d'habitude la justesse sur l'efficacité. C'est presque toujours possible de réécrire un tel code pour être plus efficace en renoncant au code superflu. Pour plus d'efficacité, vous pourriez vouloir enlever le mot-clé de n'importe quelle déclaration de retour qui est la dernière déclaration exécutée dans un sous-programme. A2p attrape la plupart des cas communs, mais n'analyse pas de blocs incorporés pour des cas plus subtils. ARGV[0] est traduit en f(CW$ARGV0, mais ARGV[n] est traduit en f(CW$ARGV[$n]. Une boucle qui essaierait de réitérer sur ARGV[0] ne le trouverait pas. [size=18] [b]Environnement[/b] [/size] .IX Header "ENVIRONNEMENT" A2p n'utilise pas de variable d'environnement. [size=18] [b]Auteur[/b] [/size] .IX Header "AUTEUR" Larry Wall <[i]larry@wall.org[/i]> [size=18] [b]Fichiers[/b] [/size] .IX Header "FICHIERS" [size=18] [b]Voir aussi[/b] [/size] .IX Header "VOIR AUSSI" .Vb 1 & perl Le compilateur/interpréteur Perl .Ve .Vb 1 & s2p traducteur de sed à perl .Ve [size=18] [b]Diagnostiques[/b] [/size] .IX Header "DIAGNOSTICS" [size=18] [b]Bugs[/b] [/size] .IX Header "BOGUES" Il devrait être possible d'émuler le comportement de awk dans le choix entre une chaine de caractères ou les opérations numériques, au moment de l'exécution par inspection des opérandes, mais ce serait brutal et inefficace. En plus, a2p devine presque toujours correctement. Le stockage de l'arbre de syntaxe de awk est actuellement statique, et peut-être expiré. [size=18] [b]Traduction[/b] [/size] Christophe Labarthe, 2003.
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Software
problème sur windows 10
Réseaux et Télécom
Administrateur Réseau - Cisco
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Matériel
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
Les Technos
Les Technos #469 : Un jour sans fin
Jeux Vidéos
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des performances à revoir
Matériel
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
Tablettes
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 serait abandonnée
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2024
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?