Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^5: Addional "year" matching functionality in word matching script

by Corion (Patriarch)
on Jun 28, 2016 at 08:41 UTC ( [id://1166730]=note: print w/replies, xml ) Need Help??


in reply to Re^4: Addional "year" matching functionality in word matching script
in thread Addional "year" matching functionality in word matching script

You call find_year(), but you never print its output. For testing, you could start with:

for my $title ( "Let's party like it's 1999", "If 6 was 9", "If 6 was 9", "Summer of 69", "Disco 2000", ) { print $title , " => ", find_year($title), "\n"; }

Replies are listed 'Best First'.
Re^6: Addional "year" matching functionality in word matching script
by bms9nmh (Novice) on Jun 28, 2016 at 14:06 UTC
    I can see this print each line in the title and the  => bit shows the year being extracted (not sure that's the right word) from the title.
    sub find_year { my( $str ) = @_; my $year; $year = $1 if( $str =~ /\b((?:19|20)\d\d)\b/ ); return $year } for my $title ( "Let's party like it's 1999", "If 6 was 9", "If 6 was 9", "Summer of 69", "Disco 2000", ) { print $title , " => ", find_year($title), "\n"; }
    One thing I'm not sure of is, I've tried to integrate the info above so that I can use the $title from a csv file rather than titles typed into the script (as in the above example). I have attempted this below but it's not working. I'd appreciate if someone could tell me what exactly i'm doing wrong. I know I'm being prompted to learn which I'm happy to do, but I think I would learn faster if someone told me what I have done wrong in the piece of code below.
    sub find_year { my( $str ) = @_; my $year; $year = $1 if( $str =~ /\b((?:19|20)\d\d)\b/ ); return $year } #get the title from csv3 open CSV3, "<csv3" or die; while (<CSV3>) { chomp; my ($title) = $_ =~ /^.+?,\s*([^,]+?),/; #/ match the title } for my $title { print $title , " => ", find_year($title), "\n"; }

      This second loop creates its own $title variable:

      for my $title { print $title , " => ", find_year($title), "\n"; }

      What you want instead is to integrate that call to find_year into your while loop:

      while( <...>) { ... my ($title) = ...; print "Have title '$title'\n"; print $title , " => ", find_year($title), "\n"; };
        Ok, thanks that's working nicely now that I'm printing it within the while loop. Is there any way to maintain the variable outside the while loop?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1166730]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (3)
As of 2024-04-19 19:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found