我试图在不使用CPAN的情况下返回用\ n替换换行符的文件的输出
这是我到目前为止所拥有的
#! /usr/local/bin/perl
if ( $#ARGV = "1" ) {
print "$ARGV[0]\n";
my $file = "$ARGV[0]";
my $document = do {
local $/;
open my $fh, "<", $file
or die "could not open $file: $!";
<$fh>;
};
print "Doc: $document\n";
}
答案 0 :(得分:3)
while(<>) {chomp;print;print '\n';}
答案 1 :(得分:1)
你可以使用slurp模式(不再需要while循环)和一些regexp:
print map { $_ =~ s/\n/\\n/; $_ } (<>);
或一些特殊变量:
my @a = <>;
$\ = $, = '\n';
chomp @a;
print @a;
($ \是输出记录分隔符,$是输出字段分隔符。两者都适用于打印操作符)
答案 2 :(得分:0)
我试过了......
#! /usr/bin/perl
if ( $#ARGV = "1" ) {
open FILE, "<", "$ARGV[0]" or die $!;
chomp $_;
@chars = map ({ $_ =~ s/\n/\\n/; $_ } (<FILE>));
print @chars;
print "@chars\n";
}
..它给了我正确的输出(除了我需要学习如何剥离的一些空格)
答案 3 :(得分:0)
为清晰起见,这是一个很长的解决方案。简而言之,chomp将删除所有尾随空格和控制字符。
#!/usr/bin/perl
use strict;
use warnings;
my $filename = shift;
my @contents;
my $lines = 0;
if (! -e $filename) {
print "Please provide a valid filename\n";
exit;
}
print "Examining $filename\n";
open(FILE, "<$filename");
while (<FILE>) {
chomp();
push(@contents, $_);
print ".";
$lines++;
if ($lines % 10 == 0) {
print "\n";
}
}
close(FILE);
print "done\n";
foreach (@contents) {
print "$_";
}
print "\n";