Je tente de raccourcir chaque ligne d'un fichier à 96 caractères tout en préservant les mots entiers. Si une ligne est inférieure ou égale à 96 caractères, je ne veux rien faire avec cette ligne. Si plus de 96 caractères, je veux le réduire au plus proche de moins de 96 tout en préservant des mots entiers. Quand j'exécute ce code, j'obtiens un fichier vide.tronquer toutes les lignes dans un fichier tout en préservant les mots entiers
use Text::Autoformat;
use strict;
use warnings;
#open the file
my $filename = $ARGV[0]; # store the 1st argument into the variable
open my $file, '<', $filename;
open my $fileout, '>>', $filename.96;
my @file = <$file>; #each line of the file into an array
while (my $line = <$file>) {
chomp $line;
foreach (@file) {
#######
sub truncate($$) {
my ($line, $max) = @_;
# always do nothing if already short enough
(length($line) <= $max) and return $line;
# forced to chop a word anyway
if ($line =~ /\s/) {
return substr($line, 0, $max);
}
# otherwise truncate on word boundary
$line =~ s/\S+$// and return $line;
die; # unreachable
}
#######
my $truncated = &truncate($line,96);
print $fileout "$truncated\n";
}
}
close($file);
close($fileout);
Pourquoi? Votre code ne l'utilise pas. Voulez-vous l'utiliser? – toolic
[Text :: Wrap] (http://search.cpan.org/perldoc?Text::Wrap) – ikegami