[EMAIL PROTECTED] am Dienstag, 2. August 2005 19.36:
> reg exp using \G
>  Datum: 2.8.05  19:36:44
>  Von: [EMAIL PROTECTED]
>  An: beginners@perl.org
>
> All,
>
> I think I am on the right track as far as what assertion to use.  I need to
> print from one string to another using .. with \G

Your boss the reason that you *need* to? ;-)

> My goal is to capture from allsets down.
>
> thank you
>
>
>
> Here is my code:
>
> #!/usr/bin/perl
> use strict;
> use warnings;
> $ENV{PATH} = qq(/opt/SUNWsamfs/sbin:/usr/bin);

Nice to see :-)

> open (ARC, "archiver -lv |") or die $!;
>
>         foreach (<ARC>)
>         {
>                 ##-- Tape --##
>                 if (/allsets/ .. /fs_clinical.1/)

You are in your foreach loop. $_ contains *one* line. I've the impression that 
here you somehow want to treat multiple lines with your if condition.

BTW, the "." in your regex stands for any char, not for a literal ".".

>                 {
>                         print $_;
>                         my $tape =$1;

You didn't capture in a regex, so $1 contains nothing.

>                 } else {
>       /  \G 'heartlab.1'/

\G is not usable here: It refers to the last match of the *same* string.  But 
a "last match" doesn't occur  in the program flow: Per line in the foreach 
loop, you visit either the if or the else part.

>       }
>         }
> close (ARC);

add a "or die" or at least "or warn" here.

>
> __END_CODE__
> __BEGIN_DATA__

Your problem, if I understand it, is to extract some adjacent lines, the first 
line and the last line containing a keyword.

One approach (and not the best/shortest I suppose) could be:
- read in lines until the start line is found
- accumulate additional lines until end line is found.

[...snipped most of the big data]

> Archive sets:
> allsets
>
>
> back.1
>  media: sf
>  Volumes:
>    STK000
>  Total space available:   60.8G
>
> back.2
>  media: sf
>  Volumes:
>    STK005
>  Total space available:   60.9G
>
> clinical1.1
>  media: sf
>  Volumes:
>    STK000
>  Total space available:   60.8G
>
> darch.1
>  media: sf
>  Volumes:
>    STK000
>  Total space available:   60.8G
>
> fs_clinical.1
>  Destination: disk1 (/darchive/data1)
[...]

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to