Always
use strict;
use warnings;
It would have told you that
$string_2 wasn't declared, and hence probably a mistake. It should be
$string. Also, in your second regex, you probably want
$next_word and not
$string, and finally,
$1, etc. get reset after each successful regex match. So you need to save them after each use. So:
#!/usr/bin/perl
use strict;
use warnings;
my $string = " info
John
100 - 2000
Kent";
my $word = "info";
$string =~ /$word\s*?(\S+)/;
my $next_word = $1;
$string =~ /$next_word\s*?(\S+)/;
my $next_word_2 = $1;
print "The next word after $word is $next_word\n";
print "The next word or number after $next_word is $next_word_2\n";