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

Update What follows is mostly true (save the striken phrase), but see the answers above. I misread the square brackets as parens (probably because that'swhat I expected... which goes to show, if nothing else, that seeing what one expects rather than what exists is a source of many errors.

join expects a list.

From perldoc -f join:

join EXPR,LIST
Joins the separate strings of LIST into a single string with fields separated by the value of EXPR, and returns that new string. Example:
  $rec = join(’:’, login,$passwd,$uid,$gid,$gcos,$home,$shell);

Your @array is not a list. Rather, in this case (ie, in the way you've written the assignment to $print_string, the list has a single-element -- a reference to @array.

See References quick reference.