#perl #input
#perl #ввод
Вопрос:
У меня простой ввод открытого файла, как показано ниже, и у меня нет проблем с чтением содержимого из входного файла, но оно не совсем читаемо.
open(IN,"<$modelRoot/Local_$project.pm") || die "ERROR: $!";
while(<IN>)
{
$temp = $_;
chomp($temp);
printf "$tempn";
}
Содержимое, которое я распечатал, выглядит нормально до точки, которая является знаком%.
Это исходное содержимое входного файла
my %LocalToolData = (
Это содержимое, которое я распечатываю, оно также выдает предупреждение
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 = (
Вопрос: Как мне прочитать% sign из входного файла и в то же время избежать предупреждения?
Комментарии:
1. Как говорится в ответе @tadman, используйте
printf
, если вам действительно не нужно специально форматировать выходные данные. И еще лучше использовать say (say "hi";
— нет необходимости в новой строке)2. Я получаю более полезное предупреждение в perl 5.24:
Missing argument in printf
. Если вы используете более старую версию, рассмотрите возможность обновления.
Ответ №1:
printf
форматирование выполняется с использованием %
, это зарезервированный символ. Первым аргументом printf
является строка шаблона, а не любая строка.
Вы должны использовать print
, если не хотите использовать эту функцию.
Вы не должны использовать printf
с каким-либо содержимым, содержащим %
, если у вас нет соответствующих значений-заполнителей для этого.
В документации даже говорится:
Не попадайтесь в ловушку использования a
printf
, когда подойдет простое