On Monday 15 May 2006 14:40, Smith, Derek wrote:
> I have this system output
>
>
>
> --- Logical volumes ---
>
> LV Name /dev/vg00/lvol1
>
> VG Name /dev/vg00
>
<snip>
>
> And I have this multiple lvols populated into 2 arrays like printed like
> so:
>
>
>
> Mirror copies 1
>
> Mirror copies 1
>
<snip>
>
> second array
>
> LV Name /dev/vg00/lvol3
>
> LV Name /dev/vg00/lvol1
>
<snip>
>
> But what I need to do is get rid of "LV Name" yet keep the
> /dev/vg00/lvol entries.
>
> Problem is this data is on one line.
>
So, as i understand it, you have an array that contains something like
LV Name /dev/vg00/lvol3
and you want to get rid of
LV Name
and keep the
/dev/vg00/lvol3
> Here is my code:
<snip>
> my @lvs;
>
> my @lvaray = qx(bdf);
>
> foreach (@lvaray) {
>
> if (/(?:)vg00/) {
>
> push @lvs, (split)[0]
>
> }
>
> }
>
>
>
> my (%hash,@mir,@mir2) = ();
>
> my ($key2,$value2) = 0;
>
> foreach my $lv (@lvs) {
>
> push @mir => (grep /mirror/i, `lvdisplay $lv`);
>
> push @mir2 => (grep /lvol\d+/i, `lvdisplay $lv`);
Try replacing the above line with
push @mir2 => (grep s/^LV Name\s*//, `lvdisplay $lv`);
Or
push @mir2 => (grep {/lvol\d+/i; s/^LV Name\s*//;} `lvdisplay $lv`);
Or if you want to keep your line
push @mir2 => (grep /lvol\d+/i, `lvdisplay $lv`);
map s/^LV Name\s*//, @mir2;
Since grep returns the value when the expression is true, if the substitution
succeeds, you will get the modified string.
Correct me if I'm wrong, but all of the expressions in the block have to
evaluate to true for grep to return the value when using the block form.
In the last one, you are carrying out the substitution on each element of the
array that you created.
Hope The Helps, Derek
>
> #chomp (@mir,@mir2);
>
> }
>
>
>
> #%hash = (@mir,@mir2);
>
>
>
> #while (($key2,$value2) = each %hash) {
>
> # print "$key2\t:$value2";
>
> #}
>
>
>
> print @mir; print "\nsecond array\n";
>
> print @mir2;
>
>
>
> #($key1,$value1) = split/=/;
>
> #$cc{$key1}= $value1;
>
>
>
> Thanks
>
> Derek
<snip>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>