in reply to Re: How to eliminate "/n" from text
in thread How to eliminate "/n" from text

(In this post, when I say "file" I mean the .inf file, not the perl file)

Larry, thanks a lot for posting.
Sorry I'm late with the reply, we had some issues with my workspace, so I couldn't work on this for a few days.

There are many URLs in the file, in the example code I only take the first line because I was just doing a test. Sorry that I did not specify.

Actually, the file is constituted of 2 URLs per process. So I divide the lines in 2 different arrays. One with the even lines and one with the odd ones. Let's suppose that the file I use is like this:

www.google.com/folder/ www.google.com/folder/onething.htm www.hotmail.com/folder/ www.hotmail.com/folder/anotherthing.htm


So, for each process I have to use the URLs in pairs.
I use a for to do it. However, that while( <INFO> ) way you told is great!! :)

The only way I know how to do what i want is with a for and a counter to separate the odds and evens.

Any ideas on alternatives that can be more efficient?? It can involve the code or the way the file is arranged.
I feel really narrow-minded right now since I'm a newbie, so any input is greatly appreciated. I hope my post is clear enough. Thanks!! :)

Replies are listed 'Best First'.
Re^3: How to eliminate "/n" from text
by larryp (Deacon) on Jan 12, 2005 at 18:42 UTC

    Hi Deib,

    Sorry for the delay in my response. I've been out of town since Jan. 5 and I just got back yesterday.

    Are you creating the data file you're using? If so, it seems like you're creating extra work for yourself. It seems like the first line is the root of the site (or site folder) and the second line is the path to the page. Why don't you simply load the file with the lines that represent the paths to the pages and use these to parse out the site paths?

    You could use the File::Basename module to parse the page paths. Consider this:

    #!/usr/bin/perl use strict; use File::Basename; my @paths = ( 'www.google.com/folder/', 'www.google.com/folder/onething.htm', 'www.hotmail.com/folder/', 'www.hotmail.com/folder/anotherthing.htm', 'www.hotmail.com/folder' ); foreach my $path ( @paths ) { print "PATH: $path\n"; # This line does all the work. my ($base, $dir, $ext) = fileparse( $path, '\.[^.]*' ); printf "DIR: $dir\nBASE: $base\nEXT: $ext\n\n"; }

    The commented line in the foreach loop is doing all the parsing work. It splits the path you give it into three pieces: The directory path to the file, the basename (the part of the file name before the extension), and the extension (the part of the file name after the final period.) Of course, if the file name does not contain an extension, the entire part after the final slash is returned as the basename.

    This is certainly a more efficient way to process the input file since it reduces the number of lines you have to process by 50%. Of course, if you have to use the file the way it stands in the example you provided, this might not help as much. :)

    Without knowing exactly what it is you're trying to do, I'm afraid I'll spend a lot of time guessing what your requirements are.

    Let me know if you have other questions or if this is unclear.

    HTH,

    /Larry