in reply to my $var = join('|',@array) not behaving

Always pass a scalar to Dumper. If you had done print Dumper(\@array);, it would have been easier to notice the array contains only one element (a reference to an array containing three elements).

The problem is that
my @array=[1,"word",2];
should be
my @array=(1,"word",2);

The [ ] operator creates an array and returns a reference to that array. Not what you want at all. You just wanted to build a list.