in reply to Re^2: Read File into array and split
in thread Read File into array and split

Can you show some example data? Otherwise we are just guessing.

Replies are listed 'Best First'.
Re^4: Read File into array and split
by tokyobuddha (Novice) on Mar 07, 2008 at 05:44 UTC
    Ok here is my script that works just fine.
    my @mshost1 = ( "msservername", "/local/p0/home/glosefob", "/var/spool/cron/crontabs", "/local/p0/home/admin/service.etc" ); sub get_dir { $client = shift(@mshost1); @dir = @mshost1; backup($client); }
    but boss needs to get hostname and dirs from file like so.
    msservername1
    "/etc/whatever"
    "/etc/whatever"
    msservername2
    "/etc/whatever"

      I think this will do what you want.

      use strict; use warnings; use YAML; my %hosts; my $current_host; while ( my $line = <DATA> ) { chomp $line; if ( my ($host) = $line =~ /\[(\w+)\]/ ) { $current_host = $host; push @{ $hosts{$current_host} }, $host; } elsif ( my ($dir) = $line =~ /"([^"]+)"/ ){ push @{ $hosts{$current_host} }, $dir; } } print Dump \%hosts; __DATA__ [msservername1] "/etc/like" "/etc/whatever" [msservername2] "/etc/whatever" __END__ --- msservername1: - msservername1 - /etc/like - /etc/whatever msservername2: - msservername2 - /etc/whatever

      I don't put the result in @mshost1, @mshost2 etc since I don't know how many there will be and it is bad practice to generate them on the fly. Instead I've put them in a hash keyed on the host name.