while ($_ ne ' \n')不检测输入是否为空行并在 while 中不确定地循环。为什么?
取决于您所说的“空行”是什么意思。
该行是否不包含换行符以外的任何字符?
if ($_ eq "\n") # Note, \n only means newline in a double quoted string.
Run Code Online (Sandbox Code Playgroud)
或者
if (/^$/)
Run Code Online (Sandbox Code Playgroud)
该行是否仅包含空白字符
if (/^\s*$/)
Run Code Online (Sandbox Code Playgroud)
但是,如果您反转逻辑以说该行不包含任何非空白字符,那就更容易了
if (! /\S/)
Run Code Online (Sandbox Code Playgroud)
其中之一应该做你想做的。