Perl Language

Transcription

Perl Language#perl

Tabla de contenidoAcerca de1Capítulo 1: Empezando con Perl o con Perl3Capítulo 2: Aleatoriedad5Observaciones5Examples5Generar un número aleatorio entre 0 y 100.5Generar un entero aleatorio entre 0 y 95Accediendo a un elemento del array al azar5Capítulo 3: Análisis XMLExamples77Analizando con XML :: Twig7Consumiendo XML con XML :: Rabbit8Analizando con XML :: LibXMLCapítulo 4: Aplicaciones GUI en Perl1012Observaciones12Examples12Solicitud de GTKCapítulo 5: Archivo I / O (lectura y escritura de 3Leyendo de un archivo13Escribir en un archivo14Abriendo una manija de archivo para leer15Apertura de archivos de texto ASCII genéricos15Apertura de archivos binarios15

Apertura de archivos de texto UTF815Leer y escribir en un archivo.16"use autodie" y no necesitará verificar los errores de apertura / cierre de archivos17autodie permite trabajar con archivos sin tener que verificar explícitamente las fallas de17Rebobinar un identificador de archivo18Lectura y escritura de archivos comprimidos gzip18Escribiendo un archivo comprimido18Leyendo de un archivo comprimido18Configuración de la codificación predeterminada para IOCapítulo 6: Bailarín1920Introducción20Examples20Ejemplo mas facilCapítulo 7: s21Ordenación léxica básica21Orden numérico22Orden inverso22La transformada de Schwartzian22Case Insensitive Sort23Capítulo 8: Comandos Perl para Windows Excel con Win32 :: módulo ciones24Examples251. Abrir y guardar Excel / Workbooks252. Manipulación de hojas de trabajo.263. Manipulación de células.264. Manipulación de Filas / Columnas.27

Capítulo 9: ComentariosExamples2929Comentarios de una sola línea29Comentarios multilínea29Capítulo 10: Compilar el módulo sapnwrfc de Perl cpan a partir del código emplo simple para probar la conexión RFC.Capítulo 11: Cuerdas y métodos de citar.3133Observaciones33Examples33Cotizaciones literales de cuerdas33Doble cita33Heredocs35Eliminando nuevas líneas finales35Capítulo 12: Declaraciones de controlExamples3737Condicionales37Declaraciones If-else37Bucles37Capítulo 13: Depuración de scripts PerlExamples3939Ejecutar script en modo de depuración39Utilice un depurador no estándar39Capítulo 14: Dividir una cadena en separadores sin comillasExamples4040parse line ()40Texto :: CSV o Texto :: CSV XS40NOTAS40Capítulo 15: Empacar y desempacar42

Examples42Conversión manual de estructuras C para empaquetar sintaxis42Construyendo un encabezado IPv443Capítulo 16: Expresiones regularesExamples4545Cuerdas a juego45Uso de \ Q y \ E en la coincidencia de patrones45Lo que está entre \ Q y \ E se trata como caracteres normales45Analizar una cadena con una expresión regular46Reemplace una cadena usando expresiones regulares46Capítulo 17: Fechas y horaExamples4848Crear un nuevo DateTime48Trabajando con elementos de fecha y hora.48Calcular el tiempo de ejecución del código.49Capítulo 18: Fechas y horaExamplesFormato de fechaCapítulo 19: Instalacion de perl50505051Introducción51Examples51Linux51OS X51Windows52Capítulo 20: Instalar módulos Perl a través de CPANExamplesEjecute Perl CPAN en su terminal (Mac y Linux) o en el símbolo del sistema (Windows)535353Línea de comando53Shell interactivo53Instalando módulos manualmente53cpanminus, el reemplazo ligero y sin configuración para cpan54

Capítulo 21: Interacción simple con la base de datos a través del módulo DBI.56Parámetros56Examples56Módulo DBICapítulo 22: Interpolación en PerlExamples565858Interpolación básica58Lo que se interpola58Capítulo 23: Leyendo el contenido de un archivo en una variableExamples6161La forma manual61Camino :: Diminuto61Archivo :: Slurper62Archivo :: Slurp62Slurping un archivo en una variable de matriz62Archivo de slurp en una sola línea62Capítulo 24: LizaExamples6464Array como lista64Asignando una lista a un hash64Las listas se pueden pasar a subrutinas65Lista de retorno de subrutina66Usando arrayref para pasar array a sub66Hash como lista67Capítulo 25: Manejo de excepcionesExampleseval y muereCapítulo 26: Mejores prácticasExamplesUtilizando Perl :: Crítico686868707070Instalación70Uso básico70

Políticas de visualización71Ignorando el código72Creando excepciones permanentes73Conclusión73Capítulo 27: Optimización del uso de la memoria.Examples7575Lectura de archivos: foreach vs. while75Procesando listas largas75Capítulo 28: Orientado a objetos PerlExamples7777Creando objetos77Definiendo clases77Herencia y resolución de métodos.78Métodos de clase y objeto81Definiendo clases en Perl moderno.82Roles83Capítulo 29: Paquetes y módulos85Sintaxis85Examples85Ejecutando los contenidos de otro archivo.85Cargando un módulo en tiempo de ejecución85Usando un modulo86Usando un módulo dentro de un directorio86CPAN.pm87Listar todos los módulos instalados88Capítulo 30: Perl one-linersExamples8989Ejecutar algún código de Perl desde la línea de comandos89Uso de cadenas entre comillas dobles en las líneas de Windows89Líneas de impresión que coinciden con un patrón (PCRE grep)89Reemplazar una subcadena con otra (PCRE sed)90Imprimir solo ciertos campos90

Imprimir líneas 5 a 1090Editar archivo en el lugar90Leyendo todo el archivo como una cadena90Subir archivo a mojolicious91Capítulo 31: Perl TestingExamplesEjemplo de prueba de unidad PerlCapítulo 32: ples94Configurar perlbrew por primera vez94Crear script de configuración /.perlbrew.sh :94Crear script de instalación install perlbrew.sh :94Ejecutar script de instalación:94Agrega al final de tu /.bashrc95Fuente /.bashrc :95Capítulo 33: Salida de depuraciónExamples9696Dumping estructuras de datos96Dumping con estilo96Dumping lista de matriz97Muestra de datos98Capítulo 34: Subrutinas100Observaciones100Examples100Creando subrutinas100Los argumentos de subrutina se pasan por referencia (excepto los de las firmas)101Subrutinas102Capítulo 35: Texto atribuidoExamplesImprimiendo texto en color104104104

Capítulo 36: Una forma sencilla de comprobar los módulos instalados en Mac y UbuntuExamples105105Compruebe los módulos perl instalados a través de la terminal105Use perldoc para verificar la ruta de instalación del paquete Perl105Cómo comprobar los módulos de la lista de Perl.105¿Cómo comprobar la versión de un módulo instalado?105Capítulo 37: UnicodeObservaciones106106Una advertencia sobre la codificación de nombre de archivo106: encoding (utf8) vs: utf8106UTF-8 vs utf8 vs UTF8107Más lectura107Examples108Crear nombres de archivos108Leer nombres de archivos108Interruptores de línea de comando para one-liners110Habilitar pragma utf8110Manejo de Unicode con interruptor -C110E / S estándar110Argumentos del guión110Capa PerlIO predeterminada110E / S estándar111Manijas de archivo111Configuración de la codificación con Open ()111Configuración de la codificación con binmode ()111pragma abierto112Configuración de la codificación con la línea de comando -C bandera112El pragma utf8: usando Unicode en tus fuentes112Manejo de UTF-8 inválido113Lectura inválida de UTF-8113Capítulo 38: Variables115

17Referencias escalares119Es posible que desee una referencia escalar si:120Referencias de Array120Hash Referencias121Typeglobs, typeglob refs, manejadores de archivos y constantes123Sigilos124Capítulo 39: Variables especiales127Observaciones127Examples127Variables especiales en perl:127Capítulo 40: Verdadero y falso128Sintaxis128Observaciones128Los siguientes valores se consideran falsos:128Todos los demás valores son verdaderos:128Los siguientes operadores se tratan normalmente para devolver un valor booleano en context128Examples129Lista de valores verdaderos y falsosCreditos129130

Acerca deYou can share this PDF with anyone you feel could benefit from it, downloaded the latest versionfrom: perl-languageIt is an unofficial and free Perl Language ebook created for educational purposes. All the contentis extracted from Stack Overflow Documentation, which is written by many hardworking individualsat Stack Overflow. It is neither affiliated with Stack Overflow nor official Perl Language.The content is released under Creative Commons BY-SA, and the list of contributors to eachchapter are provided in the credits section at the end of this book. Images may be copyright oftheir respective owners unless otherwise specified. All trademarks and registered trademarks arethe property of their respective company owners.Use the content presented in this book at your own risk; it is not guaranteed to be correct noraccurate, please send your feedback and corrections to e1

Capítulo 1: Empezando con Perl LanguageObservacionesPerl es el camello de las lenguas: útil, pero no siempre bello. Tiene una buena documentaciónpropia a la que se puede acceder usando el comando perldoc desde su shell / comando. Tambiénestá disponible en línea en perldoc.perl.org .VersionesVersiónNotas de lanzamientoFecha de 1delta ,perl582delta ,perl583delta ,perl584delta ,perl585delta ,perl586delta ,perl587delta 18https://riptutorial.com/es/home2

VersiónNotas de lanzamientoFecha de sEmpezando con PerlPerl intenta hacer lo que quieres decir:print "Hello World\n";Los dos bits difíciles son el punto y coma al final de la línea y el \n , que agrega una nueva línea(avance de línea). Si tiene una versión relativamente nueva de perl, puede usar say lugar de printpara que el retorno de carro se agregue automáticamente:5.10.0use feature 'say';say "Hello World";La función say también se habilita automáticamente con una usev5.10(o superior):use v5.10;say "Hello World";Es bastante común simplemente usar perl en la línea de comandos usando la opción -e : perl -e 'print "Hello World\n"'Hello WorldAgregar la opción -l es una forma de imprimir nuevas líneas automáticamente: perl -le 'print "Hello World"'Hello Worldhttps://riptutorial.com/es/home3

5.10.0Si desea habilitar nuevas funciones , use la opción -E lugar: perl -E 'say "Hello World"'Hello WorldPor supuesto, también puede guardar el script en un archivo. Simplemente elimine la opción delínea de comando -e y use el nombre de archivo del script: perl script.pl . Para programas máslargos que una línea, es aconsejable activar un par de opciones:use strict;use warnings;print "Hello World\n";No hay una desventaja real más que hacer el código un poco más largo. A cambio, el estrictopragma le impide usar código potencialmente inseguro y las advertencias le notifican muchoserrores comunes.Observe que el punto y coma de fin de línea es opcional para la última línea, pero es una buenaidea en caso de que luego agregue al final de su código.Para obtener más opciones sobre cómo ejecutar Perl, vea perlrun o escriba perldoc perlrun en unsímbolo del sistema. Para obtener una introducción más detallada de Perl, vea perlintro o escribaperldoc perlintro en el símbolo del sistema. Para un tutorial interactivo peculiar, prueba Perl .Lea Empezando con Perl Language en línea: ocon-perl-languagehttps://riptutorial.com/es/home4

Capítulo 2: AleatoriedadObservacionesDocumentación para la función rand () de perl: sGenerar un número aleatorio entre 0 y 100.Pase un límite superior como argumento a la función rand ().Entrada:my upper limit 100;my random rand( upper limit);print random . "\n";Salida:Un número aleatorio de punto flotante, como .45.8733038119139Generar un entero aleatorio entre 0 y 9Emitir su número de punto flotante aleatorio como un int.Entrada:my range 10;# create random integer as low as 0 and as high as 9my random int(rand( range));# max value is up to but not equal to rangeprint random . "\n";Salida:Un entero aleatorio, como .0Véase también el perldoc para rand .Accediendo a un elemento del array al azarhttps://riptutorial.com/es/home5

my @letters ( 'a' . 'z' );# English ascii-betprint letters[ rand @letters ] for 1 . 5;# prints 5 letters at randomCómo funciona rand EXPR espera un valor escalar, por lo que @letters se evalúa en un contexto escalar Una matriz en contexto escalar devuelve el número de elementos que contiene (26 en estecaso) rand 26 devuelve un número fraccionario aleatorio en el intervalo 0 VALUE 26 . (Nuncapuede ser 26 ) Los índices de matriz son siempre enteros, por lo que letters[rand @letters] letters[intrand @letters] Las matrices de Perl están indexadas en cero, por lo que array[rand array[0] , array[ #array] o un elemento intermedio@array]devuelve(El mismo principio se aplica a los hashes)my %colors ( red 0xFF0000,green 0x00FF00,blue 0x0000FF,);print ( values %colors )[rand keys %colors];Lea Aleatoriedad en línea: iedadhttps://riptutorial.com/es/home6

Capítulo 3: Análisis XMLExamplesAnalizando con XML :: Twig#!/usr/bin/env perluse strict;use warnings 'all';use XML::Twig;my twig XML::Twig- parse( \*DATA );#we can use the 'root' method to find the root of the XML.my root twig- root;#first child finds the first child element matching a value.my title root- first child('title');#text reads the text of the element.my title text title- text;print "Title is: ", title text, "\n";#The above could be combined:print twig - root- first child text('title'), "\n";## You can use the 'children' method to iterate multiple items:my list twig- root- first child('list');#children can optionally take an element 'tag' - otherwise it just returns all of them.foreach my element ( list- children ) {#the 'att' method reads an attributeprint "Element with ID: ", element- att('id') // 'none here', " is ", element- text,"\n";}#And if we need to do something more complicated, we an use 'xpath'.#get xpath or findnodes do the same thing:#return a list of matches, or if you specify a second numeric argument, just that numberedmatch.#xpath syntax is fairly extensive, but in this one - we search:# anywhere in the tree: //#nodes called 'item'#with an id attribute [@id]#and with that id attribute equal to "1000".#by specifying '0' we say 'return just the first match'.print "Item 1000 is: ", twig- get xpath( '//item[@id "1000"]', 0 )- text, "\n";#this combines quite well with map to e.g. do the same thing on multiple itemsprint "All IDs:\n", join ( "\n", map { - att('id') } twig - get xpath('//item'));#note how this also finds the item under 'summary', because of //https://riptutorial.com/es/home7

DATA ?xml version "1.0" encoding "utf-8"? root title some sample xml /title first key "value" key2 "value2" second Some text /second /first third fourth key3 "value" Text here too /fourth /third list item id "1" Item1 /item item id "2" Item2 /item item id "3" Item3 /item item id "66" Item66 /item item id "88" Item88 /item item id "100" Item100 /item item id "1000" Item1000 /item notanitem Not an item at all really. /notanitem /list summary item id "no id" Test /item /summary /root Consumiendo XML con XML :: RabbitCon XML::Rabbit es posible consumir archivos XML fácilmente. Usted define de forma declarativay con una sintaxis de XPath lo que está buscando en XML y XML::Rabbit devolverá los objetos deacuerdo con la definición dada.Definición:package Bookstore;use XML::Rabbit::Root;has xpath object list books './book' 'Bookstore::Book';finalize class();package Bookstore::Book;use XML::Rabbit;has xpath value bookid './@id';has xpath value author './author';has xpath value title './title';has xpath value genre './genre';has xpath value price './price';has xpath value publish date './publish date';has xpath value description './description';has xpath object purchase data './purchase data' 'Bookstore::Purchase';finalize class();package Bookstore::Purchase;use XML::Rabbit;has xpath value price './price';has xpath value date './date';finalize class();https://riptutorial.com/es/home8

Consumo de XML:use strict;use warnings;use utf8;package Library;use feature qw(say);use Carp;use autodie;say "Showing data information";my bookstore Bookstore- new( file './sample.xml' );foreachsaysaysay}my book( @{ bookstore- books} ) {"ID: " . book- bookid;"Title: " . book- title;"Author: " . book- author, "\n";Notas:Por favor tenga cuidado con lo siguiente:1. La primera clase debe ser XML::Rabbit::Root . Te colocará dentro de la etiqueta principal deldocumento XML. En nuestro caso nos colocará dentro de catalog 2. Clases anidadas que son opcionales. Es necesario acceder a esas clases a través de unbloque try / catch (o eval / @ check). Los campos opcionales simplemente devolverán null. Por ejemplo, para purchase data el bucle sería:foreachsaysaysaytrymy book( @{ bookstore- books} ) {"ID: " . book- bookid;"Title: " . book- title;"Author: " . book- author;{say "Purchase price: ". book- purchase data- price, "\n";} catch {say "No purchase price available\n";}}sample.xml ?xml version "1.0"? catalog book id "bk101" author Gambardella, Matthew /author title XML Developer's Guide /title genre Computer /genre price 44.95 /price publish date 2000-10-01 /publish date description An in-depth look at creating applicationswith XML. /description /book book id "bk102" https://riptutorial.com/es/home9

author Ralls, Kim /author title Midnight Rain /title genre Fantasy /genre price 5.95 /price publish date 2000-12-16 /publish date description A former architect battles corporate zombies,an evil sorceress, and her own childhood to become queenof the world. /description /book book id "bk103" author Corets, Eva /author title Maeve Ascendant /title genre Fantasy /genre price 5.95 /price publish date 2000-11-17 /publish date description After the collapse of a nanotechnologysociety in England, the young survivors lay thefoundation for a new society. /description /book book id "bk104" author Corets, Eva /author title Oberon's Legacy /title genre Fantasy /genre price 5.95 /price publish date 2001-03-10 /publish date description In post-apocalypse England, the mysteriousagent known only as Oberon helps to create a new lifefor the inhabitants of London. Sequel to MaeveAscendant. /description purchase data date 2001-12-21 /date price 20 /price /purchase data /book /catalog Analizando con XML :: LibXML# This uses the 'sample.xml' given in the XML::Twig example.# Module requirements (1.70 and above for use of load xml)use XML::LibXML '1.70';# let's be a good perl devuse strict;use warnings 'all';# Create the LibXML Document Objectmy xml XML::LibXML- new();# Where we are retrieving the XML frommy file 'sample.xml';# Load the XML from the filemy dom XML::LibXML- load xml(location file);# get the docroothttps://riptutorial.com/es/home10

my root dom- getDocumentElement;# if the document has childrenif( root- hasChildNodes) {# getElementsByLocalName returns a node list of all elements who's# localname matches 'title', and we want the first occurrence# (via get node(1))my title root- getElementsByLocalName('title');if(defined title) {# Get the first matched node out of the nodeListmy node title- get node(1);# Get the text of the target nodemy title text node- textContent;print "The first node with name 'title' contains: title text\n";}# The above calls can be combined, but is possibly prone to errors# (if the getElementsByLocalName() failed to match a node).## my title text root- getElementsByLocalName('title')- get node(1)- textContent;}# Using Xpath, get the price of the book with id 'bk104'## Set our xpathmy xpath q!/catalog/book[@id 'bk104']/price!;# Does that xpath exist?if( root- exists( xpath)) {# Pull in the twigmy match root- find( xpath);if(defined match) {# Get the first matched node out of the nodeListmy node match- get node(1);# pull in the text of that nodemy match text node- textContent;print "The price of the book with id bk104 is: match text\n";}}Lea Análisis XML en línea: s-xmlhttps://riptutorial.com/es/home11

Capítulo 4: Aplicaciones GUI en PerlObservacionesTk es uno de los kits de herramientas GUI más utilizados para Perl. Otros kits de herramientascomunes son GTK 2 y 3, WxWidgets y widgets Win32. Menos comúnmente utilizados son Qt4,XUL, Prima y FLTK.Tk, GTK 3, Wx, Win32, Prima, FLTK y XUL se actualizan activamente. Qt4 y GTK 2 ya no sedesarrollan activamente, pero pueden tener versiones de mantenimiento.ExamplesSolicitud de GTKuse strict;use warnings;use Gtk2 -init;my window Gtk2::Window- new(); window- show();Gtk2- main();0;Lea Aplicaciones GUI en Perl en línea: iones-guien-perlhttps://riptutorial.com/es/home12

Capítulo 5: Archivo I / O (lectura y escriturade archivos)ParámetrosModoExplicacion Escribir (trunc) . Sobrescribirá los archivos existentes. Crea un nuevo archivo si nose encontró ningún archivo Escribir (adjuntar) . No sobrescribirá los archivos, sino que agregará contenidonuevo al final. También creará un archivo si se utiliza para abrir un archivo noexistente. Leer Abre el archivo en modo de solo lectura. Leer / Escribir . No creará ni truncará el archivo. Lectura / Escritura (trunc) . Creará y truncará el archivo. Leer / Escribir (añadir) . Creará pero no truncará el archivo.Observacionesse utiliza a menudo cuando se lee de un archivo. Por defecto, recorta el carácter de nuevalínea, aunque para su funcionalidad completa, refiérase a los perldocs .chompTenga cuidado con la diferencia entre caracteres y bytes: no todas las codificaciones,especialmente UTF-8, utilizan caracteres de 1 byte. Si bien esto se maneja de manera casiperfecta por PerlIO, hay un posible escollo: usa caracteres para sus parámetros de longitud y desplazamientoseek y tell usar siempre bytes para posicionamientoreadAsí que no uses aritmética basada en estos valores mixtos. En su lugar, use, por ejemplo,Encode::encode('utf8', value by read) para obtener los octetos (bytes) de un resultado de read ,cuya cuenta puede usar con tell y seek .ExamplesLeyendo de un archivomy filename '/path/to/file';https://riptutorial.com/es/home13

open my fh, ' ', filename or die "Failed to open file: filename";# You can then either read the file one line at a time.while(chomp(my line fh )) {print line . "\n";}# .or read whole file into an array in one gochomp(my @fileArray fh );Si sabe que su archivo de entrada es UTF-8, puede especificar la codificación:open my fh, ' :encoding(utf8)', filename or die "Failed to open file: filename";Después de terminar de leer el archivo, se debe cerrar el identificador de archivo:close fh or warn "close failed: !";Ver también: Leer un archivo en una variable.Otra forma más rápida de leer un archivo es usar File :: Slurper Module. Esto es útil si trabajascon muchos archivos.use File::Slurper;my file read text("path/to/file"); # utf8 without CRLF transforms by defaultprint file; #Contains the file bodyVer también: [Leyendo un archivo con sorbete]Escribir en un archivoEste código abre un archivo para escribir. Devuelve un error si no se pudo abrir el archivo.También cierra el archivo al final.#!/usr/bin/perluse strict;use warnings;use open qw( :encoding(UTF-8) :std ); # Make UTF-8 default encoding# Open "output.txt" for writing (" ") and from now on, refer to it as the variable fh.open(my fh, " ", "output.txt")# In case the action failed, print error message and quit.or die "Can't open output.txt: !";Ahora tenemos un archivo abierto listo para la escritura que se accede a través de fh (estavariable se denomina gestor de archivo). A continuación podemos dirigir la salida a ese archivousando el operador de print :# Print "Hello" to fh ("output.txt").print fh "Hello";# Don't forget to close the file once we're done!close fh or warn "Close failed: !";https://riptutorial.com/es/home14

El operador open tiene una variable escalar ( fh en este caso) como su primer parámetro. Comose define en el operador open , se trata como un identificador de archivo . El segundo parámetro" " (mayor que) define que el archivo está abierto para escritura. El último parámetro es la rutadel archivo para escribir los datos.Para escribir los datos en el archivo, el operador de print se utiliza junto con el identificador dearchivo. Observe que en el operador de print no hay una coma entre el identificador de archivo yla declaración en sí, solo el espacio en blanco.Abriendo una manija de archivo para leerApertura de archivos de texto ASCII genéricos5.6.0open my filehandle, ' ', name of file or die "Can't open name of file, !";Este es el lenguaje básico para el archivo IO "predeterminado" y hace que filehandle archivo seaun flujo de entrada legible de bytes , filtrado por un decodificador predeterminado específico delsistema, que puede configurarse localmente con el pragma openPerl en sí no maneja los errores en la apertura del archivo, por lo que debe manejarlos ustedmismo al verificar la condición de salida de open . ! se rellena con el mensaje de error que hizoque la apertura falle.En Windows, el decodificador predeterminado es un filtro "CRLF", que asigna cualquier secuencia"\ r \ n" en la entrada a "\ n"Apertura de archivos binarios5.8.0open my filehandle, ' :raw', 'path/to/file' or die "Can't open name of file, !";Esto especifica que Perl no debe realizar una traducción de CRLF en Windows.Apertura de archivos de texto UTF85.8.0open my filehandle, ' :raw:encoding(utf-8)', 'path/to/file'or die "Can't open name of file, !";Esto especifica que Perl debe evitar la traducción de CRLF y luego decodificar los bytes resultantesen cadenas de caracteres (implementados internamente como matrices de enteros que puedenexceder de 255), en lugar de cadenas de byteshttps://riptutorial.com/es/home15

Leer y escribir en un archivo.Antes de leer y escribir archivos de texto, debe saber qué codificación utilizar. Consulte ladocumentación de Perl Unicode para obtener más detalles sobre la codificación . Aquí mostramosla configuración de UTF-8 como la codificación y decodificación predeterminadas para la funciónopen . Esto se hace usando el pragma open cerca de la parte superior de su código (justo despuésde su use strict; y use warnings; sería apropiado):use strict;use warnings;use open qw( :encoding(UTF-8) :std );La función open crea un identificador de archivo que se utiliza para leer y / o escribir en un archivo.La función open tiene la firma.open(FILEHANDLE, MODE, FILEPATH)y devuelve un valor falso si la operación falla. La descripción delerror se almacena en ! .Leyendo#!/usr/bin/perluse strict;use warnings;use open qw( :encoding(UTF-8) :std ); # Make UTF-8 default encodingmy file path "/path/to/file";open(my file handle, ' ', file path) or die "Could not open file! !";while(my row file handle ) {print chomp( row), "\n";}close file handleor warn "Close failed!";Escritura#!/usr/bin/perluse strict;use warnings;use open qw( :encoding(UTF-8) :std ); # Make UTF-8 default encodingmy file path "/path/to/file";open(my file handle, ' ', file path) or die "Could not open file! !";print file handle "Writing to a file";close file handleor warn "Close failed!";Lectura de trozosAbrir y leer archivos grandes puede llevar tiempo y recursos. Si solo se requiere una pequeñahttps://riptutorial.com/es/home16

parte del contenido, puede ser una buena idea leer el contenido en fragmentos utilizando lafunción de read que tiene la firmaread(FILEHANDLE, SCALAR, LENGTH, OFFSET)debe ser un identificador de archivo abierto, SCALAR mantendrá los datos de lecturadespués de la operación. LENGTH especifica el número de caracteres que se leerán a partir de laOFFSET . La función devuelve el número de caracteres leídos, 0 si se alcanzó el final del archivo yundef en caso de error.FILEHANDLEread( file handle, data, 16, 0);Lee 16 caracteres desde el principio del archivo en data ."use autodie" y no necesitará verificar los errores de apertura / cierre dearchivospermite trabajar con archivos sin tener que verificarexplícitamente las fallas de apertura / cierre.autodieDesde Perl 5.10.1, autodie ha estado disponible en Core Perl. Cuando se utiliza, Perl buscaráautomáticamente errores al abrir y cerrar archivos.Aquí hay un ejemplo en el que todas las líneas de un archivo se leen y luego se escriben al finalde un archivo de registro.useuseuseuseuse5.010;# 5.010 and later enable "say", which prints arguments, then a newlinestrict;# require declaring variables (avoid silent errors due to typos)warnings; # enable helpful syntax-related warningsopen qw( :encoding(UTF-8) :std ); # Make UTF-8 default encodingautodie; # Automatically handle errors in opening and closing filesopen(my fh in, ' ', "input.txt"); # check for failure is automatic# open a file for appending (i.e. using " ")open( my fh log, ' ', "output.log"); # check for failure is automaticwhile (my line readline fh in) # also works: while (my line fh in ){# remove newlinechomp line;# write to log filesay fh log line or die "failed to print ' line'"; # autodie doesn't check print}# Close the file handles (chec

Capítulo 1: Empezando con Perl Language Observaciones Perl es el camello de las lenguas: útil, pero no siempre bello. Tiene una buena documentación propia a la que se puede acceder usando el comando perldoc desde su shell / comando. También está disponible en línea en perldoc.perl.