我的脚本有效,除非我附加文件:它将我的单词串成一个字符串,如下所示:
Joe Smo45MaleSingle
最初,在文本文件中,它们位于列中。我希望附加的文件保留在列中。
#!/usr/bin/perl
use strict;
use warnings;
use File::Slurp;
my @array1 = ("Full Name:", "Age:", "Gender:", "Marital Status:");
my @array2 = read_file("empdata.txt", chomp => 1);
print "$array1[0] $array2[0]\n";
print "$array1[1] $array2[1]\n";
print "$array1[2] $array2[2]\n";
print "$array1[3] $array2[3]\n";
print "Do you want to change the age? (y or n) :";
chomp(my $answer = <STDIN>);
if ($answer eq "y") {
print "What is the new age? :";
chomp(my $age = <STDIN>);
$array2[1] = $age;
write_file("empdata.txt",@array2);
print "Do you want to change marital status? (y or n) :";
chomp(my $answer = <STDIN>);
if ($answer eq "y") {
print "What is the new marital status? :";
chomp(my $status = <STDIN>);
$array2[3] = $status;
write_file("empdata.txt",@array2);
}
} else {
print "Do you want to change marital status? (y or n) :";
chomp(my $answer = <STDIN>);
if ($answer eq "y") {
print "What is the new marital status? :";
chomp(my $status = <STDIN>);
$array2[3] = $status;
write_file("empdata.txt",@array2);
}
}
close || die "could not close file";
答案 0 :(得分:1)
我猜,因为你没有向我们展示你的输入数据。但我认为你说你的输入文件是这样的:
Joe Smo
45
Male
Single
并且,在运行程序之后,您最终得到了这个:
Joe Smo45MaleSingle
当您阅读该文件时,您使用chomp => 1
选项read_file()
。这将从文件中的行末尾删除换行符。但write_file()
没有unchomp
选项来替换换行符。
最快,最脏,修复是停止删除换行符。您需要从chomp => 1
中移除read_file()
选项,并在阅读新chomp()
值时停止调用$status
。您还可以删除“\ {1}} n“从您打印原始记录的行(因为它们将附加换行符)。
但是,我提醒您不要使用File :: Slurp。它有一些UTF8数据的问题,可能会在将来烧毁你。我建议使用Path::Tiny(其中包含slurp()
和spew()
方法)。
但是,实际上,看起来你正在编写一个数据库。那么为什么不使用数据库?