in reply to sed awk to perl help

You're on the right track already, except that variable names in Perl are prefixed by a sigil - $ is the sigil for a single value, while @ is the sigil for an array/a list, and % is the sigil for a hash ("associative array" in awk).

For a start, I'd just convert the stuff behind the cat invocation verbatim which is the trickier part:

use strict; # Read from standard input while (<>) { s/;/\n/g; # this is just like sed s/:/\n/g; # this is just like sed # Now, split the input line on newlines, like awk will do: my @pages = split /\n/; for my $page (@pages) { # I'm using qq{...} instead of double quotes (") # so I don't have to escape the stuff in ugly ways print qq{<a href="http://mysite.net/$page">$page</a>\n}; }; };

To convert the two verbatim sed commands and the awk command into one thing that just takes everything that is delimited by ; or : and prints out a HTML link to it, I'd rewrite the loop as follows:

use strict; # Read from standard input while (<>) { # Remove the newline at the end of $_ chomp; # Split the input line on ":" or ";": my @pages = split /[:;]/; for my $page (@pages) { # I'm using qq{...} instead of double quotes (") # so I don't have to escape the stuff in ugly ways print qq{<a href="http://mysite.net/$page">$page</a>\n}; }; };

Update: Replaced my erroneous use of $1 with $page, which is the correct variable to use. Thanks, johngg!

Replies are listed 'Best First'.
Re^2: sed awk to perl help
by johngg (Canon) on Apr 17, 2007 at 08:54 UTC
    Perhaps I'm missing something but how is the $l (or is it $1) in the print statements getting initialised. Maybe it should be $page in each case?

    Cheers,

    JohnGG