You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl追加姓名到文本文件时如何避免清空原有存储内容

Perl追加写入文件问题修复方案

问题原因

你代码中打开写入文件时使用的>是覆盖写入模式,只要执行打开操作就会直接清空文件所有原有内容;且原代码将写入文件的打开操作放在了用户确认注册之前,即使用户拒绝注册也会触发文件清空,这是旧姓名丢失的核心原因。

修改要点

  1. 将写入文件的打开模式从>改为追加模式>>,新内容会直接附加到文件末尾,不会改动原有存储的内容
  2. 关闭第一次读取文件使用的FILE句柄,避免出现文件占用异常
  3. 调整逻辑:仅当用户输入yes确认注册时,才执行姓名输入、打开文件、写入操作,避免无意义的空内容写入和误清空

修复后完整代码

my $file = "name.txt";

# 读取并打印文件内所有姓名
unless(open FILE, $file) {
    die "\n无法打开 $file\n";
}
while(my $line = <FILE>) {
    print $line;
}
close FILE;

print "是否要注册?\n";
$choice = <STDIN>;
$confirm = "yes\n";
if ($choice eq $confirm) {
    print "请输入姓名\n";
    $new_name = <STDIN>;
    # 追加模式打开文件,不会清空原有内容
    open (fh, ">>", "name.txt") or die "无法打开文件进行写入: $!";
    print fh $new_name;
    close(fh) or die "关闭文件失败";
}

内容的提问来源于stack exchange,提问作者Kimberly Harris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:06:07