Lost Password?

Go Back   CodeCall Programming Forum > Web Development Forum > Perl

Perl Discussion for the PERL language - Practical Extraction and Reporting Language, is a programming language often used for creating CGI programs.

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old 05-15-2008, 05:36 PM
John_L John_L is offline
Newbie
 
Join Date: May 2008
Posts: 10
Rep Power: 0
John_L is on a distinguished road
Default Need some help with my script

Basic XML parser. I noted an "EMPTY???" comment beside the area which doesn't print anything. It's strange because the variables do get filled properly...anyone have any ideas?

Code:
#!/usr/bin/perl -w 

my $title = ""; #title
my $link  = ""; #link
my $description = ""; #description
my $item_found = 0; # <item> element within the xml file

print "<html>\n";
print "\n\t<body>\n";


#read xml file from standard input
while( $line = <stdin> )
{
	
	#remove white space
	chomp( $line );
			
	if( $item_found == 0 )
	{	
		$start = index( $line, "item" ); #find an item tag
		
		if( $start != -1 )
		{
			$item_found = 1; #beginning of item
		}
	}
	
	if( $item_found == 1 )
	{

		#parse data that we want
				
		$title = &process_element( $line, "title" ); 
		$link = &process_element( $line, "link" );
		$description = &process_element( $line, "description" );
				
		#look for the end of item tag
		$end = index( $line, "/item" );
			
		if( end != -1 )
		{
			
			#print the gathered information to the html file			
			if( length( $title ) != 0 || length( $link ) != 0 || length( $description ) != 0 )
			{
				print "\n\t\t<p> \n\t \t\t<a href= \"$link\"> $title </a> \n\t\t\t $description \n\t\t</p>\n\n" ; #EMPTY????
			}
			
			#clear stored information
			$title = "";
			$link = "";
			$description = "";
			
			$chann_found = 0; #end of channel
			$item_found = 0; #end of item
		}
		
	}
	
	

}

#$_[0] = line, $_[1] = tag
sub process_element
{	
	#my ( $start, $end, $length );		#private local variables 
	#my $information = "";
	
	#Grab the string between these tags
	$start = index( $_[0], "$_[1]" );	#assume this is how a beginning tag will always look
	$end = rindex( $_[0], "</" );		#this is how an ending tag will always look
			
	if( $start != -1 )
	{
		$start = index( $_[0], ">" ) + 1; #advance start to the end of the tag
		$end = rindex( $_[0], "<" ); #advance start to the beginning of the closing tag
			
		$length = length( $_[0] );
			
		#end tag wasn't on the same line
		if( $end == -1 )
		{
			$end = $length;
		}
			
		$length = $end - $start; #the length of the substring
		
		$information = substr( $_[0], $start, $length );
		
		#replace encoded characters if any exist
		$information =~ s/&lt;/</;
		$information =~ s/&gt;/>/;
		$information =~ s/&amp;/&/;
					
		return $information
		
	}
}

print "\n\t</body>\n";
print "\n</html>\n\n";
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Sponsored Links
  #2 (permalink)  
Old 05-15-2008, 06:09 PM
John_L John_L is offline
Newbie
 
Join Date: May 2008
Posts: 10
Rep Power: 0
John_L is on a distinguished road
Default Re: Need some help with my script

never mind...i know what was wrong.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 05-15-2008, 11:51 PM
v0id's Avatar   
v0id v0id is offline
Super Moderator
 
Join Date: Apr 2007
Location: Denmark
Posts: 2,445
Last Blog:
CherryPy(thon)
Rep Power: 27
v0id is a glorious beacon of lightv0id is a glorious beacon of lightv0id is a glorious beacon of lightv0id is a glorious beacon of lightv0id is a glorious beacon of lightv0id is a glorious beacon of light
Send a message via MSN to v0id
Default Re: Need some help with my script

Can you explain what was wrong? Other users might have the same problem as you had.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 05-16-2008, 10:26 AM
John_L John_L is offline
Newbie
 
Join Date: May 2008
Posts: 10
Rep Power: 0
John_L is on a distinguished road
Default Re: Need some help with my script

no problem. In subroutines a return value is not necessary, but you can include one. It doesn't follow the same structure as high level language though, notice how mine is inside an if statement, so it could in fact never execute, leaving my subroutine without a return value (not allowed in many languages). That was the issue, on certain cases the variables assigned to the subroutine value returned ended up either equaling nothing or whatever may be equivalent to void. So my variables would equal the correct value, but following another execution of the subroutine given a case where the return statement wasn't executed, they were overridden. I hope that makes sense....and is understandable. I just threw in a "error check" if statement to correct the problem.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #5 (permalink)  
Old 05-17-2008, 04:21 PM
jmcallister jmcallister is offline
Newbie
 
Join Date: May 2008
Posts: 3
Rep Power: 0
jmcallister is on a distinguished road
Default Re: Need some help with my script

Thank you for sharing the issue with us this actually helped me with a build perl script that i have been having problems with.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Sponsored Links
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
DNS script - required! Walls Request Services (Paid) 0 02-11-2008 02:43 AM
Hacking Perl Script falco85 Perl 5 11-12-2007 04:51 PM
JavaScript:Tutorial, Using an External Script TcM Javascript 7 09-11-2007 07:39 AM
(Script) Copy content to clipboard, how? annannienann Visual Basic Programming 0 06-19-2007 05:20 PM


All times are GMT -5. The time now is 03:38 AM.

Contest Stats

John ........ 223.00000
dargueta ........ 168.00000
Xav ........ 164.00000
LogicKills ........ 20.00000
gaylo565 ........ 18.00000
WingedPanther ........ 15.00000
|pH| ........ 15.00000
Johnnyboy ........ 3.00000
navghost ........ 1.00000

Contest Rules

CodeCall Goal

Goal: 100,000 Posts
Complete: 67%

Ads