I'm not sure how you think split can return a list of dirs for every line, especially since the lines containing "ms" don't contains dirs.

my main goal is to put the hostname in to $client and the dir into @dir and each client starts with ms.

"starts with" implies split probably isn't the right tool.
That you don't have a list of similar items implies split probably isn't the right tool.

Assuming the data is as you showed in in your original post, and assuming that the hostnames are in square brackets and you simply didn't bother to fix your post, the following should do the trick.

my $file = '/scripts/clients'; open(my $fh, '<', $file) or die("Unable to open file \"$file\": $!\n"); my $hostname; my @dirs; while (<$fh>) { chomp; if (/^\[/) { backup($client, \@dirs) if defined($hostname); s/^\[//; s/\]$//; $hostname = $_; @dirs = (); } else { s/^"//; s/"$//; push @dirs, $_; } } backup($client, \@dirs) if defined($hostname);

DATA is a special name. You shouldn't use it. It's bad to use global variables anyway.


In reply to Re^3: Read File into array and split by ikegami
in thread Read File into array and split by tokyobuddha

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.