如何在Perl中删除这些警告?

如何在Perl中删除这些警告?,perl,warnings,Perl,Warnings,这里我检查每列中的最大字宽 my @col_lns; while (<file>) { my @row = split " ",$_; @col_lns = map ((length) @rows) if $. ==1; for ( my $col_l =0; $col_l <$#row; $col_l+=1) { my $col_ln = length $row[$col_l]; if ($col_lns[$col_l] < $col

这里我检查每列中的最大字宽

my @col_lns;
while (<file>) {
  my @row = split " ",$_;
  @col_lns = map ((length) @rows) if $. ==1;

for ( my $col_l =0; $col_l <$#row; $col_l+=1) {
my $col_ln = length $row[$col_l];

  if ($col_lns[$col_l] < $col_ln)    ###Here I am getting warning
{
  $col_lns[$col_l] = $col_ln;
}
}
警告2


你自己诊断这两种情况都不难


在数值lt中使用未初始化值这两种情况都不难自己诊断


在数值lt中使用未初始化值声明我的$col\u ln,但稍后使用$coln。这是故意的还是错误的?如果您没有使用use strict,Perl不会反对您错误地创建一个新变量并尝试使用它,它会给出一个未初始化的警告。看起来您删除了部分警告,例如未初始化值$add in substr的使用,这将解释另一个错误undefined string的长度为0。@HG如果代码与您试图运行它时的代码不完全相同,则永远不要发布问题。这违背了大多数问题的全部目的。如果您没有使用use strict,请将其添加到您的程序中,修复错误,然后使用修复后的代码编辑您的问题。如果代码与您尝试运行时的代码不完全相同,请更正。但要明确的是,我们也不想要无关的细节。创建一个显示问题的最小可运行代码段,运行它以确保它能够运行,然后发布。如果我认为您指的是map{length}@rows或maplength,@rows,您仍然可以在第一个语法中使用parens。所以,也许他们想要map{length}@rows,您声明我的$col_ln,但稍后您使用$coln。这是故意的还是错误的?如果您没有使用use strict,Perl不会反对您错误地创建一个新变量并尝试使用它,它会给出一个未初始化的警告。看起来您删除了部分警告,例如未初始化值$add in substr的使用,这将解释另一个错误undefined string的长度为0。@HG如果代码与您试图运行它时的代码不完全相同,则永远不要发布问题。这违背了大多数问题的全部目的。如果您没有使用use strict,请将其添加到您的程序中,修复错误,然后使用修复后的代码编辑您的问题。如果代码与您尝试运行时的代码不完全相同,请更正。但要明确的是,我们也不想要无关的细节。创建一个显示问题的最小可运行代码段,运行它以确保它能够运行,然后发布。如果我认为您指的是map{length}@rows或maplength,@rows,您仍然可以在第一个语法中使用parens。因此,也许他们想要map{length}@rows,因为第一个警告很奇怪。[…]您是否编辑得太多了?当然应该是使用未初始化的值$add-in substr。这也解释了随后的警告。undef的字符串化是空字符串,因此substrundef,4,4与substr,4,4等价,除了警告之外,导致第二个警告。问题是,解决第一个问题可能会解决第二个问题。[…]您是否编辑得太多了?当然应该是使用未初始化的值$add-in substr。这也解释了随后的警告。undef的字符串化是空字符串,因此substrundef,4,4与substr,4,4等价,除了警告之外,导致第二个警告。关键是,解决第一个问题可能会解决第二个问题。
Use of uninitialized value in numeric lt (<) 

my $pack1 = substr($add,4,4);
my $pack2 = substr($add,0,4);
Use of $add in substr
substr outside of string 

if ($col_lns[$col_l] < $coln)