En Perl, la mayoría de mis printdeclaraciones toman la forma
print "hello." . "\n";
¿Existe una buena manera de evitar tener todos los molestos "\ n" por ahí?
Sé que podría crear una nueva función como la myprintque agrega automáticamente \ n, pero sería bueno si pudiera anular la existente print.

perldoc perlvardescribe la mayoría de las advertencias, ¿por qué insistir en ellas aquí?Respuestas:
Perl 6 tiene la
sayfunción que se agrega automáticamente\n.También puede usar
sayen Perl 5.10 o 5.12 si agregaal comienzo de su programa. O puede usar Modern :: Perl para obtener esta y otras características.
Consulte la función de perldoc para obtener más detalles.
fuente
use 5.012;ouse 5.010;conseguirlo si se está ejecutando esos nuevosperls.Puede usar la
-lopción en el encabezado she-bang:Salida:
fuente
perlopciones, incluido lo que-lestá haciendo, aquí .Si Perl 5.10+ no es una opción, aquí hay una aproximación rápida y sucia. No es exactamente lo mismo, ya que say tiene algo de magia cuando su primer argumento es un identificador, pero para imprimir en STDOUT:
fuente
La forma en que está escribiendo su declaración impresa es innecesariamente detallada. No es necesario separar la nueva línea en su propia cadena. Esto es suficiente.
Esta realización probablemente facilitará la codificación en general.
Además de usar
use feature "say"ouse 5.10.0ouse Modern::Perlpara obtener lasayfunción incorporada, voy a utilizar perl5i, que activa muchas funciones sensibles de Perl 5 que faltan por defecto.fuente
Tal vez desee cambiar su separador de registros de salida para avanzar de línea con:
local $\ = "\n";Actualización: mi respuesta habla de capacidad más que de conveniencia. No considero que agregar "\ n" al final de las líneas sea una tarea "molesta", pero si alguien realmente quiere evitarlos, esta es una forma. Si tuviera que mantener un poco de código que usa esta técnica, probablemente lo refactorizaría pronto.
fuente
"helo\r\n"que ahora envía"helo\r\n\n".local $\ = "\n";-les excelente para las líneas de comandos de una sola línea (consulte perldoc.perl.org/perlrun.html#Command-Switches ). No lo recomendaría en ningún programa más grande.Esto es lo que encontré en https://perldoc.perl.org/perlvar.html :
ejemplo:
fuente
En Perl 6 existe, la
sayfunciónfuente
Si está atascado con la versión anterior a 5.10, las soluciones proporcionadas anteriormente no replicarán completamente la
sayfunción. Por ejemploNo funcionará con invocaciones como
o
... porque la función anterior no actúa sobre el me
$_gusta global implícitoprinty lasayfunción real .Para replicar más de cerca el perl 5.10+
say, desea esta funciónQue ahora actúa así
La función
sayincorporada en perl6 se comporta un poco diferente. Invocándolo consay @arro@arr.sayno solo concatenará los elementos de la matriz, sino que los imprimirá separados con el separador de lista. Para replicar esto en perl5 deberías hacer esto$"es la variable de separador de lista global, o si está usandoEnglish.pmentonces es es$LIST_SEPARATORAhora actuará más como perl6, así
fuente