मैं एक मिटोसाइट सॉफ्टवेयर चलाने की कोशिश कर रहा हूं जो पर्ल में लिखा गया है। मैं पर्ल स्क्रिप्टिंग से बहुत परिचित नहीं हूं, और मुझे निम्न त्रुटि मिलती है:

needLargeMem: trying to allocate 0 bytes (limit: 100000000000)
Use of uninitialized value $elements[6] in pattern match (m//) at MitoSAlt1.1.pl line 221, <CONFIG> line 75.

मुझे लगता है कि मुझे इस टुकड़े में कुछ बदलना है, लेकिन मुझे कोई सुराग नहीं है क्योंकि मैं इसे अच्छी तरह समझ नहीं पा रहा हूं।

sub check_paired{
  my $check_paired = 0;
  my $path = shift;
  my $line = `zcat $path|tail -n 1`;
  my @elements = split(/\t/, $line);

  $check_paired = 1 if $elements[6]=~m/\/.$/;
  return $check_paired;
}
0
user3224522 5 फरवरी 2021, 17:10
2
zcat $path | tail -n 1 के आउटपुट में कम से कम 7 टैब सीमांकित फ़ील्ड होने की उम्मीद है। आपके मामले में, 6 या उससे कम हैं।
 – 
choroba
5 फरवरी 2021, 17:19

1 उत्तर

सबसे बढ़िया उत्तर

"अप्रारंभीकृत" संदेश एक चेतावनी है जिसका अर्थ है कि @elements सरणी में 7 से कम आइटम हैं। इंडेक्स 6 पर आइटम की जांच करने से पहले आप यह जांच कर उस चेतावनी से बच सकते हैं कि सरणी में कितने आइटम हैं:

sub check_paired{
  my $check_paired = 0;
  my $path = shift;
  my $line = `zcat $path|tail -n 1`;
  my @elements = split(/\t/, $line);

  if (@elements > 6) {
      $check_paired = 1 if $elements[6]=~m/\/.$/;
  }
  return $check_paired;
}
4
toolic 5 फरवरी 2021, 17:29