To round off, just a quick comment on 'join' that may clarify things. As
zengargoyle says, you don't need to worry about the efficiency of built-ins - if a language has a command, it's usually worth using it, rather than 'rolling your own'.
In the example you give though, if "$x='4:6:8'" is exactly what you want to end up with, then by all means, type it out in full. In most real-life situations though, that list of numbers is likely to come from somewhere else - my $x = join(":",@list_of_user_supplied_data" or something.
Also, from a readability point of view, seeing a 'join(":")' followed later by a 'split(":")' makes your intention more obvious.
Hope this helps.