In addition to what hv said, especially Use strict and warnings, do not parse XML with regular expressions (at least your input looks like it's XML). Since you didn't show your input (<REGION> tags) or the rest of your code (e.g. the %opposite hash), it's really hard to guess where the problem might be coming from, but it might be one of those two things.
use warnings; use strict; use XML::LibXML; my $xml = <<'EOT'; <root> <REGION seq_beg="1" pdb_beg="2" seq_end="3" pdb_end="4" type="1"/> <REGION seq_beg="5" pdb_beg="6" seq_end="7" pdb_end="8" type="2"/> <REGION seq_beg="9" pdb_beg="10" seq_end="11" pdb_end="12" type="3"/> </root> EOT my $topo_initial = "ABCDEFGHIJK"; my $side1 = "x"; my %opposite = ( x => "?" ); my $dom = XML::LibXML->load_xml(string => $xml); for my $node ($dom->findnodes('//REGION')) { my $offset = $node->{seq_beg} - 1; my $length = $node->{seq_end} - $node->{seq_beg} + 1; if ( $node->{type}==1 ) { substr($topo_initial, $offset, $length, ($side1 x $length) ); } elsif ( $node->{type}==2 ) { substr($topo_initial, $offset, $length, ($opposite{$side1} x $ +length) ); } else { substr($topo_initial, $offset, $length, ('U' x $length) ); } } use Test::More tests=>1; is $topo_initial, "xxxD???HUUU";
In reply to Re: substr out of str error - but why?
by haukex
in thread substr out of str error - but why?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |