If the problem was that you were not catching those 57's, it was because of those blanks within [], so just modify your regexp to allow it:
use strict;
use warnings;
while (my $file_content = <DATA>) {
if ( $file_content =~ m/Vc3/ ) {
my @numbers = $file_content =~ /\[\s*(\d+)\s*\]/g;#modified
{ local $,=':'; print @numbers; print $/ }
}
}
__DATA__
Item no.0: NameDepth [2]
<0> Class: [1] NetElementObjectClass Instance
+: (int) [2]
<1> Class: [ 57 ] Vc3TtpSnkObjectClass Instan
+ce: (int) [3]
Item no.1: NameDepth [2]
<0> Class: [1] NetElementObjectClass Instance
+: (int) [2]
This prints:
57:3
57