Escribí una secuencia de comandos perl usando Tie :: Handle :: CSV para procesar un conjunto de datos en un archivo csv e imprimir solo lo que necesito en un nuevo archivo csv. En este momento, imprimo la línea de cabecera con todos los nombres de campo por sólo un hardcoding en este modo:Imprimir encabezado CSV con Tie :: Handle :: CSV
print '"TERM", "STUDENT ID", "NAME", ..."'."\n";
Sospecho que esto es una manera tonta de hacer esto, pero no sé cómo obtener acceso al encabezado desde el objeto Tie :: Handle :: CSV. Se crea una instancia como tal,
my $fh = Tie::Handle::CSV->new($file,header=> 1);
y se accede a los datos como tal,
$line -> {'CATALOG_NBR'}
Sé lo suficiente para saber que esto es un hash-referencia, pero no lo suficiente para saber cómo imprimir el encabezado de utilizar este en lugar de hardcoding. Obviamente, "ellos" generalmente cambian los nombres precisos de las columnas y el orden justo después de que el script vuelva a funcionar cada término.
¡Muchas gracias por cualquier ayuda! JA
Gracias chicos - terminé haciendo esencialmente una combinación de sus consejos. Abrí dos manejadores de archivo - el segundo $ hfh con encabezado => 0 para poder imprimir las etiquetas de encabezado en el orden correcto como así: my $ fh = Tie :: Handle :: CSV-> new ($ file , encabezado => 1); my $ hfh = Tie :: Handle :: CSV-> new ($ file, header => 0); my $ line = <$hfh>; my $ header; foreach (@ {$ line}) { $ header. = "\" $ _ \ ","; } print "$ header \ n"; ¡Gracias nuevamente por su ayuda! – Jason