无法读取包含 % 符号的输入文件内容

eri*_*cew 1 perl input

我有一个简单的打开文件输入,如下所示,我从输入文件中读取内容没有问题,但不完全可读。

open(IN,"<$modelRoot/Local_$project.pm") || die "ERROR\: $!";

    while(<IN>)
    {
        $temp = $_;
        chomp($temp);
        printf "$temp\n";
    }
Run Code Online (Sandbox Code Playgroud)

我打印出来的内容看起来不错,直到出现 % 符号为止。这是原始输入文件内容

my %LocalToolData = (
Run Code Online (Sandbox Code Playgroud)

这是我打印出来的内容,它也给出了警告

Use of uninitialized value in printf at rfinteg_v4.pl line 846, <IN> line 24.
Use of uninitialized value in printf at rfinteg_v4.pl line 847, <IN> line 24.
my 0calToolData = (
Run Code Online (Sandbox Code Playgroud)

问题:如何从输入文件中读取 % 符号并同时避免出现警告?

tad*_*man 8

printf使用 进行格式化%,它是一个保留字符。的第一个参数printf模板字符串,而不是任何字符串。

print除非您想使用该功能,否则您应该使用它。

除非您有相应的占位符值,否则不应printf与任何内容一起使用%

它甚至在文档中说

不要陷入使用 a 的陷阱,printf当一个简单的方法print可以做到时。的print是更有效和更容易出错。