Rmck wrote:
> 
> Hello,

Hello,

> I have a perl script that opens up a text file and displays the data fine.
> My textfile:
> 
> 111.111.111.1-25|DEPTA
> 222.222.222.50-60|DEPTB
> 
> What I would like to do is have it increment 1 through 25, and 50 through 60,
> and display that like so:
> 
> SO FAR ......
> here is the data file hosts.dat:
> 
> 111.111.111.444|DEPTA
> # DEPTB Stuff
> 222.222.222.1-15|DEPTB
> 222.222.222.20|DEPTB
> # DEPTC INFO
> 333.333.333.20-25|DEPTC
> #
> 444.444.44.555|DEPTF
> 
> here is script "create.pl":
> 
> #!/usr/bin/perl -w
> 
> while (<>) {
> 
> next if /^#/;          # skip comments.
> 
>  if (/\b-\b/){
> 
> print;
> 
> }
> }
> 
> bash-2.03# ./create.pl host.dat
> 222.222.222.1-15|DEPTB
> 333.333.333.20-25|DEPTC
> bash-2.03#
> 
> WHAT I NEED...
> So what im looking at doing is having IP's with "-" print out as so and to a new 
> file....:
> 222.222.222.1|DEPTB
> 222.222.222.2|DEPTB
> .
> .
> 222.222.222.15|DEPTB
> 333.333.333.20|DEPTC
> 333.333.333.21|DEPTC
> .
> .
> 333.333.333.25|DEPTC

This should do what you want:

while ( my $line = <> ) {
    next if $line =~ /^#/;          # skip comments.
    if ( $line =~ s/(\d+-\d+)/%d/ ) {
        ( my $range = $1 ) =~ s/-/ .. /;
        printf $line, $_ for eval $range;
        }
    else {
        print;
        }
    }



John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to