Je suis très nouveau à Perl (juste vu une vidéo Youtube dessus). Je veux faire un script qui prend deux fichiers .csv et les ajouter ensemble et faire un nouveau fichier .csv. Je ne veux pas que les deux fichiers .csv en cours d'ajout soient modifiés. Je veux aussi faire en sorte que ce script prenne une entrée d'utilisateur en tant que fichier à fusionner (pour l'instant les deux fichiers .csv ajoutés sont dans le même répertoire). L'erreur que je reçois toujours est: print() sur le handle de fichier fermé OUT sur la ligne 1 (# 2) (W closed) Le fichier que vous imprimez s'est fermé il y a quelque temps déjà. Vérifiez votre flux de contrôleprint() sur un handle de fichier fermé OUT au
Mais je n'ai jamais utilisé la commande close alors comment se ferment mes handles de fichiers?
use strict;
use warnings;
use diagnostics;
use feature 'say';
use feature "switch";
use v5.22;
# Ask for Base File
say "What is the base file you want to use?";
my $base_file = <STDIN>;
chomp $base_file;
open (BASE, '<', $base_file) or die "Couldn't find the base file you are entered: $base_file ";
# Ask for Append File
say "What is the file you want to append to the base file?";
my $append_file = <STDIN>;
chomp $append_file;
open (APPEND, '<', $append_file) or die "Couldn't find the append file you are entered: $append_file ";
# Create new File with new name
say "What is the name of the new file you want to create?";
my $new_file = <STDIN>;
open (OUT, '>>', $new_file);
chomp $new_file;
while(my $base_line = <BASE>) {
chomp $base_line;
print OUT $base_line;
}
Notes: (1) Lorsque vous utilisez 'v5.22;' les fonctionnalités 'say' et' switch' sont activées (il n'y a donc pas besoin de 'use feature ...'), tout comme 'strict' . (2) Le [changement de fonction] (https://perldoc.perl.org/feature.html#The-%27switch%27-feature) est considéré comme expérimental et il est presque certain qu'il subira des changements dans le futur. (3) Vous 'chomp $ base_line' donc il n'a pas de nouvelle ligne, puis vous« print »sans un retour à la ligne. Ainsi, toutes ces "lignes" seront une grande ligne. Si vous utilisez '' chomp' 'say' (pour ajouter une nouvelle ligne), ou mieux ne faites pas' chomp' et 'print' comme vous le faites, puisque vous ne faites que copier des lignes entières. – zdim