Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I have a variable that contains a comma delimited list of directories and I am looking for the best way to push that list into an array. The list is similar to what follows, and it's format really can't be changed:

my $paths="c:/temp0,c:/temp1,c:/temp2";

I would like to build an array from it so that:

 my @array[0]="c:/temp0;
 my @array[1]="c:/temp1";
 my @array[2]="c:/temp2;

I'm sure this is probably easy, but not for me. Thanks much.

Replies are listed 'Best First'.
Re: Newbie Array Question
by dragonchild (Archbishop) on Sep 11, 2003 at 13:50 UTC
    Your question was answered above. However, I would highly recommend you make the following changes to your code and coding processes:
    1. Buy the Llama book, aka Learning Perl by Randal Schwartz.
    2. Add use strict; to the top of every perl script you write.
    3. When you do that, you'll have to my every variable you use.
    4. Add use warnings; right below the use strict line.
    5. You'll be inundated with stuff. Take the time to figure them out.
    6. One of those warnings will be "Scalar value @x[0] better written as $x[0]". Heed that warning. @x[0] is not a scalar value, but an array slice. You would use it if you wanted the first, third, and ninth values of an array. (@x[0,2,8])

    ------
    We are the carpenters and bricklayers of the Information Age.

    The idea is a little like C++ templates, except not quite so brain-meltingly complicated. -- TheDamian, Exegesis 6

    Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

Re: Newbie Array Question
by Zaxo (Archbishop) on Sep 11, 2003 at 13:35 UTC

    You want split my @array = split /,/, $paths;

    After Compline,
    Zaxo

Re: Newbie Array Question
by zby (Vicar) on Sep 11, 2003 at 13:34 UTC
    my @paths = split ",", $paths;
    See perldoc -f split
Re: Newbie Array Question
by LordWeber (Monk) on Sep 11, 2003 at 14:56 UTC