Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Massaging the Dictionary

by hacker (Priest)
on Aug 14, 2007 at 13:54 UTC ( #632495=perlquestion: print w/ replies, xml ) Need Help??
hacker has asked for the wisdom of the Perl Monks concerning the following question:

I've got a snippet of code that I'm using to query definitions from dict.org, and am trying to sanitize/scrape the output, to format it a bit differently.

The problem begins when I try to detect the EOL (\n$) in each line returned. Here is the code thus far:

use strict; use warnings; use diagnostics; use Data::Dumper; use Net::Dict; my $word = $ARGV[0]; my $dict = Net::Dict->new('test.dict.org'); my $result = $dict->define("$word")->[1][1]; # This is where things don't work as intended # Original line # $result =~ 's,\n$,<br />,gsm'; # Fixed version below $result =~ s,\n,<br />,gsm; print $result;

What I'm trying to do, should be fairly straightforward, but I've tried various machinations to detect the end of line characters on each definition returned, and none of them seem to work properly.

Any help? What am I doing wrong here?

UPDATE: Thanks to the help of Limbic~Region and Corion on the CB, it turns out that wrapping my s,,,g in single quotes was killing it. I'm so used to doing that in perl one-liners in the shell, I just added them habitually to my script. Now it works. DOH!

Comment on Massaging the Dictionary
Select or Download Code
Re: Massaging the Dictionary
by FunkyMonk (Canon) on Aug 14, 2007 at 14:05 UTC
    You've got your substitute in single quotes! Try $result =~ s,\n$,<br />,gsm. However, \n$ looks highly suspicious. I don't think that's what you want.

Re: Massaging the Dictionary
by moritz (Cardinal) on Aug 14, 2007 at 14:06 UTC
    If you want to insert the br-Tags, use this one:

    $ perl -wle '$_="a\nbc\nd";s{$}{<br />}gm; print' a<br /> bc<br /> d<br />

    This is your regex but without the additional \n.

    If you want to replace the line endings, use s{\n}{<br />}gm

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://632495]
Approved by Corion
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (5)
As of 2014-09-16 01:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (155 votes), past polls