• 'The Silence of the Lambs' Sequel Comes June 8 ( 0)
  • A Comeback for Kay Thompson's Eloise ( 0)
  • Amazon.com Moves Into Auction, Pet Markets ( 0)
  • Audio Book Club Buys D'day Club ( 0)
  • BEA '99: Browsing the Bookstores ( 0)
  • BEA '99: From Culture to Kitsch ( 0)
  • BEA '99: Los Angeles After Dark ( 0)
  • BEA '99: Magnetic L.A. ( 0)
  • BEA '99: The Hollywood/Book Embrace ( 0)
  • Back on the Move -- the Show Arrives in L.A. ( 0)
  • Behind the Bestsellers ( 0)
  • BookExpo America 1999 ( 0)
  • Callaway Editions to Publish Golf Line ( 0)
  • Computer Literacy Has New Name, Sales Jump ( 0)
  • David Guterson: Stoic of The Pacific Northwest ( 0)
  • Early BookExpo America Has Publishers Scrambling ( 0)
  • Entrekin: Great Moment for Independent Publishing ( 0)
  • Full Steam Ahead for Taylor &Francis ( 0)
  • Golden Expects Big Loss in 98 ( 0)
  • Harcourt Brace Now Harcourt Inc. ( 0)
  • Hot Deals ( 0)
  • Houghton Mifflin to Distribute Beacon Press ( 0)
  • Intervisual Books Finishes Poor 1998 ( 0)
  • Miss Manners' BEA Advice ( 0)
  • Morrow Partners With 'Utne Reader' ( 0)
  • Newell to Head Weldon Owen ( 0)
  • Now Nonfiction Gets the List Treatment ( 0)
  • ON THE MOVE: Onion Book Peels Off to Great Sales ( 0)
  • PW's Bookseller of the Year: Carla Cohen &Barbara Meade Politics and Prose, Washington, D.C. ( 0)
  • PW's Robin Mays, 1942-1999 ( 0)
  • Pearson Edn. Intros Quality Assurance Program ( 0)
  • Penguin Forms New Consumer Products Post ( 0)
  • Potter's U.S. Publication Pushed Up ( 0)
  • Rodale Launches Imprint, New Branding Campaign ( 0)
  • THE NEWSBREAK: The Kosovo Connection ( 0)
  • Zany Brainy Looks to Raise $98 Million in Offering ( 0)

    Reviews:
  • X
    Stay ahead with
    Tip Sheet!
    Free newsletter: the hottest new books, features and more
    X
    X
    X
    Email Address

    Password

    Log In Lost Password

    Parts of this site are only available to paying PW subscribers. Subscribers: to set up your digital access click here.

    To subscribe, click here.

    PW “All Access” site license members have access to PW’s subscriber-only website content. Simply close and relaunch your preferred browser to log-in. To find out more about PW’s site license subscription options please email: pw@pubservice.com.

    If you have questions or need assistance setting up your account please email pw@pubservice.com or call 1-800-278-2991 (U.S.) or 1-818-487-2069 (all other countries), Monday-Friday between 5am and 5pm Pacific time for assistance.

    Not Registered? Click here.
    EVAL ERROR: syntax error at (eval 4449) line 207, near ""Read more about "$ENV"
    Global symbol "$author" requires explicit package name at (eval 4449) line 207.
    Global symbol "$html_title" requires explicit package name at (eval 4449) line 211.
    Global symbol "$html_title" requires explicit package name at (eval 4449) line 211.
    Global symbol "$default_title" requires explicit package name at (eval 4449) line 211.
    Global symbol "$meta_description" requires explicit package name at (eval 4449) line 212.
    Global symbol "$meta_description" requires explicit package name at (eval 4449) line 212.
    Global symbol "$default_description" requires explicit package name at (eval 4449) line 212.
    Global symbol "$meta_keywords" requires explicit package name at (eval 4449) line 213.
    Global symbol "$meta_keywords" requires explicit package name at (eval 4449) line 213.
    Global symbol "$default_keywords" requires explicit package name at (eval 4449) line 213.
    Global symbol "$html_title" requires explicit package name at (eval 4449) line 215.
    Global symbol "$meta_description" requires explicit package name at (eval 4449) line 216.
    Global symbol "$meta_description" requires explicit package name at (eval 4449) line 217.
    Global symbol "$meta_description" requires explicit package name at (eval 4449) line 218.
    Global symbol "$meta_description" requires explicit package name at (eval 4449) line 219.
    Global symbol "$meta_description" requires explicit package name at (eval 4449) line 220.
    Global symbol "$twitter_description" requires explicit package name at (eval 4449) line 221.
    Global symbol "$twitter_description" requires explicit package name at (eval 4449) line 222.
    Global symbol "$twitter_description" requires explicit package name at (eval 4449) line 223.
    Global symbol "$twitter_description" requires explicit package name at (eval 4449) line 224.
    Global symbol "$meta_keywords" requires explicit package name at (eval 4449) line 225.
    Global symbol "$html_title" requires explicit package name at (eval 4449) line 227.
    Global symbol "$meta_keywords" requires explicit package name at (eval 4449) line 228.
    Global symbol "$meta_description" requires explicit package name at (eval 4449) line 229.
    Global symbol "$last_modified" requires explicit package name at (eval 4449) line 230.
    Global symbol "$last_modified" requires explicit package name at (eval 4449) line 231.
    Global symbol "$html_title" requires explicit package name at (eval 4449) line 234.
    Global symbol "$default_image" requires explicit package name at (eval 4449) line 235.
    Global symbol "$meta_description" requires explicit package name at (eval 4449) line 236.
    Global symbol "$twitter_creator" requires explicit package name at (eval 4449) line 241.
    Global symbol "$twitter_creator" requires explicit package name at (eval 4449) line 242.
    Global symbol "$twitter_title" requires explicit package name at (eval 4449) line 244.
    Global symbol "$twitter_description" requires explicit package name at (eval 4449) line 245.
    Global symbol "$default_image" requires explicit package name at (eval 4449) line 246.
    syntax error at (eval 4449) line 260, near "}
     }"
    (eval 4449) has too many errors.
    
    Code:
    line 1: package tmpevalpackage;
    line 2: sub doEval { 
    line 3: 	my(@sel,%data,$html_title,$meta_description,$meta_keywords,$default_title,$default_description,$default_keywords,$last_modified);
    line 4: 	my($twitter_creator,$twitter_title,$twitter_description);
    line 5: 	
    line 6: 	$default_title = 'Book Reviews, Bestselling Books & Publishing Business News | Publishers Weekly';
    line 7: 	$default_keywords = 'book news, book reviews, bestselling books, book bestsellers, book publishing, best selling books, list of books, book business, publishing business';
    line 8: 	$default_description = 'Publishers Weekly is the international news website of book publishing and bookselling including business news, reviews, bestseller lists, commentaries and more.';
    line 9: 	
    line 10: 	my $default_image = "http://www.publishersweekly.com/images/data/IMG/img/000/000/1-3.PNG";
    line 11: 	
    line 12: 	# try the topic (or subtopic)
    line 13: 	if($LayoutManager::url_resolved_values{'TOPIC_TREE.nickname'}) {
    line 14: 		&Database::GetParentRow($LayoutManager::url_resolved_values{'TOPIC_TREE.nickname'},\%data);
    line 15: 		if($data{'html_title'}) { $html_title = $data{'html_title'}; };
    line 16: 		if($data{'meta_description'}) { $meta_description = $data{'meta_description'}; };
    line 17: 		if($data{'meta_keywords'}) { $meta_keywords = $data{'meta_keywords'}; };
    line 18: 
    line 19: 		# we are in a subtopic get the topic and fill in missing fields
    line 20: 		if($LayoutManager::url_values{'TOPIC'}) { 
    line 21: 			&Database::Select('TOPIC_TREE','nickname',$LayoutManager::url_values{'TOPIC'},\@sel);
    line 22: 			if(@sel == 1) {
    line 23: 				&Database::GetRow($sel[0],'TOPIC_TREE',\%data);
    line 24: 				if($data{'html_title'} && !$html_title) { $html_title = $data{'html_title'}; }
    line 25: 				if($data{'meta_description'} && !$meta_description) { $meta_description = $data{'meta_description'}; }
    line 26: 				if($data{'meta_keywords'} && !$meta_keywords) { $meta_keywords = $data{'meta_keywords'}; }
    line 27: 			}
    line 28: 		}
    line 29: 	}
    line 30: 
    line 31: 	# fill in missing info from page
    line 32: 	if($LayoutManager::url_resolved_values{'PAGE.description'}) {
    line 33: 		&Database::GetParentRow($LayoutManager::url_resolved_values{'PAGE.description'},\%data);
    line 34: 		if(!$html_title) { $html_title = $data{'html_title'}; };
    line 35: 		if(!$meta_description) { $meta_description = $data{'meta_description'}; };
    line 36: 		if(!$meta_keywords) { $meta_keywords = $data{'meta_keywords'}; };
    line 37: 	}
    line 38: 	
    line 39: 	# article takes precidence over topic and subtopic
    line 40: 	if($LayoutManager::url_resolved_values{'ARTICLE.nickname'}) {
    line 41: 		&Database::GetParentRow($LayoutManager::url_resolved_values{'ARTICLE.nickname'},\%data);
    line 42: 		$html_title = $data{'headline'};
    line 43: 		if($data{'title_web'}) { $html_title = $data{'title_web'}; $twitter_title = $data{'title_web'}; };
    line 44: 		if($data{'html_title'}) { $html_title = $data{'html_title'}; };
    line 45: 		if($data{'abstract_web'}) { $meta_description = $data{'abstract_web'}; $twitter_description = $data{'abstract_web'}; };
    line 46: 		if($data{'meta_description'}) { $meta_description = $data{'meta_description'}; };
    line 47: 		if($data{'meta_keywords'}) { $meta_keywords = $data{'meta_keywords'}; };
    line 48: 		$last_modified = &GetLastModified($data{'pub_date'});
    line 49: 		
    line 50: 		my($canonical,%topic_data,%sub_topic_data,%issue_data);
    line 51: 		if($data{'the_topic'}) {
    line 52: 			&Database::GetRow($data{'the_topic'},'TOPIC_TREE',\%sub_topic_data);
    line 53: 			&Database::GetParentRow($sub_topic_data{'parent'},\%topic_data);
    line 54: 			$canonical = "http://www.publishersweekly.com/pw/by-topic/$topic_data{'nickname'}/$sub_topic_data{'nickname'}/article/$data{'nickname'}.html";
    line 55: 		}
    line 56: 		else {
    line 57: 			if($data{'issue'}) {
    line 58: 				&Database::GetRow($data{'issue'},'ISSUE',\%issue_data);
    line 59: 				$canonical = "http://www.publishersweekly.com/pw/print/$issue_data{'date'}/$data{'nickname'}.html";
    line 60: 			}
    line 61: 		}
    line 62: 		if($data{'the_photo'}) {
    line 63: 			my(%image_data);
    line 64: 			&Database::GetRow($data{'the_photo'},'ARTICLE_PHOTO',\%image_data);
    line 65: 			if($image_data{'photo__file'}) {
    line 66: 				$default_image = "http://www.publishersweekly.com/images/data/$image_data{'photo__file'}";
    line 67: 			}
    line 68: 		}
    line 69: 		if($canonical) {
    line 70: 			&Templates::SetMeta("<link rel=\"canonical\" href=\"$canonical\" />");
    line 71: 		}
    line 72: 	}
    line 73: 
    line 74: 	# reviews by ISBN
    line 75: 	if($LayoutManager::url_values{'ISBN'}) {
    line 76: 		my($isbn,@sel,$work,%issue_data);
    line 77: 		$isbn = $LayoutManager::url_values{'ISBN'};
    line 78: 		
    line 79: 		$isbn =~ s/\-//g;
    line 80: 		$default_image = "https://booklife.com/image-factory/http/localhost/amazongetcover/$isbn.jpg/w204.jpg";
    line 81: 
    line 82: 		&Database::Select('WORK_INSTANCE','isbn_std',$isbn,\@sel);
    line 83: 
    line 84: 		if(@sel) {
    line 85: 			$work = $sel[0];
    line 86: 			@sel = ();
    line 87: 			&Database::Select('REVIEW','book',$work,\@sel);
    line 88: 			
    line 89: 			# my $root = "images/cached/INGRAM";
    line 90: 			# my $row_path = $isbn;
    line 91: 			# $row_path =~ s/^(...)(...)(...)(.*)/$1\/$2\/$3/;
    line 92: 
    line 93: 			# if(-e "/disk02/PW/htdocs/$root/$row_path/$isbn\.jpg"){
    line 94: 			#	 $default_image = "http://www.publishersweekly.com/$root/$row_path/$isbn\.jpg";
    line 95: 			# }
    line 96: 			
    line 97: 			if(@sel) {
    line 98: 				&Database::FetchRow($sel[0],'REVIEW',\%data);
    line 99: 				my($tmp) = $data{'info_line'};
    line 100: 				$tmp =~ s/<[^>]+>//g;
    line 101: 				$html_title = "$data{'category'} Book Review: $data{'title'} by $tmp";
    line 102: 				$meta_description = substr($data{'body'},0,200);
    line 103: 				if($data{'pub_date'}) {
    line 104: 					$last_modified = &GetLastModified($data{'pub_date'});
    line 105: 				}
    line 106: 				else {
    line 107: 					&Database::GetRow($data{'issue-UNRESOLVED'},'ISSUE',\%issue_data);
    line 108: 					$last_modified = &GetLastModified($issue_data{'date'});
    line 109: 				}
    line 110: 
    line 111: 				$twitter_creator = '@publisherswkly';
    line 112: 				$twitter_title = $data{'title'};
    line 113: 				$twitter_description = $meta_description;
    line 114: 			}
    line 115: 		}
    line 116: 	}
    line 117: 	
    line 118: 	# reviews
    line 119: 	if($LayoutManager::url_resolved_rows{'REVIEW.nickname'}) {
    line 120: 		my(%issue_data);
    line 121: 		&Database::FetchRow($LayoutManager::url_resolved_rows{'REVIEW.nickname'},'REVIEW',\%data);
    line 122: 		my($tmp) = $data{'info_line'};
    line 123: 		$tmp =~ s/<[^>]+>//g;
    line 124: 		$html_title = "$data{'category'} Review: $data{'title'} by $tmp";
    line 125: 		$meta_description = substr($data{'body'},0,200);
    line 126: 		
    line 127: 		$twitter_creator = '@publisherswkly';
    line 128: 		$twitter_title = $data{'title'};
    line 129: 		$twitter_description = $meta_description;
    line 130: 		
    line 131: 		if($data{'pub_date'}) {
    line 132: 			$last_modified = &GetLastModified($data{'pub_date'});
    line 133: 		}
    line 134: 		else {
    line 135: 			&Database::GetRow($data{'issue-UNRESOLVED'},'ISSUE',\%issue_data);
    line 136: 			$last_modified = &GetLastModified($issue_data{'date'});
    line 137: 		}
    line 138: 
    line 139: 		if($data{'book-UNRESOLVED'}){
    line 140: 			my (%instance_data);
    line 141: 			&Database::GetRow($data{'book-UNRESOLVED'},'WORK_INSTANCE',\%instance_data);
    line 142: 			
    line 143: 			my $tmpisbn = $instance_data{'isbn_std'};
    line 144: 			$tmpisbn =~ s/\-//g;
    line 145: 			$default_image = "https://booklife.com/image-factory/http/localhost/amazongetcover/$tmpisbn.jpg/w204.jpg";
    line 146: 
    line 147: 			# my $root = "images/cached/INGRAM";
    line 148: 			# my $row_path = $instance_data{'isbn_std'};
    line 149: 			# $row_path =~ s/^(...)(...)(...)(.*)/$1\/$2\/$3/;
    line 150: 	
    line 151: 			# if(-e "/disk02/PW/htdocs/$root/$row_path/$instance_data{'isbn_std'}\.jpg"){
    line 152: 			# 	$default_image = "http://www.publishersweekly.com/$root/$row_path/$instance_data{'isbn_std'}\.jpg";
    line 153: 			# }
    line 154: 		}
    line 155: 	}
    line 156: 
    line 157: 	if($Templates::in{'channel'} && $Templates::in{'podcast'}) {
    line 158: 		my(%podcast_data);
    line 159: 		&Database::GetRow($Templates::in{'podcast'},'PODCAST',\%podcast_data);
    line 160: 		$html_title = $podcast_data{'title'};
    line 161: 		if($podcast_data{'description'}) { $meta_description = $podcast_data{'description'}; }
    line 162: 		if($podcast_data{'image__file'}) {
    line 163: 			$default_image = "http://www.publishersweekly.com/images/data/$podcast_data{'image__file'}";
    line 164: 		}
    line 165: 		$last_modified = &GetLastModified($podcast_data{'date_posted'});
    line 166: 	}
    line 167: 	
    line 168: 	if($Templates::path =~ /\/bookit\//) {
    line 169: 		if($Templates::in{'record'}) {
    line 170: 			my(%data);
    line 171: 			&Database::GetRow($Templates::in{'record'},'MARKETING_CALL',\%data);
    line 172: 			$html_title = "$data{'headline'} | Publishers Weekly";
    line 173: 		}
    line 174: 		else {
    line 175: 			$html_title = "BookIt | Publishers Weekly";	
    line 176: 		}
    line 177: 	}
    line 178: 	if($Templates::path =~ /\/newsbrief\//) {
    line 179: 		if($Templates::in{'record'}) {
    line 180: 			my(%data);
    line 181: 			&Database::GetRow($Templates::in{'record'},'NEWS_BRIEFS',\%data);
    line 182: 			$html_title = "$data{'headline'}";
    line 183: 			$twitter_title = "$data{'headline'}";
    line 184: 			$meta_description = "$data{'abstract'}";
    line 185: 			$twitter_description = "$data{'abstract'}";
    line 186: 			if($data{'image__file'}) {
    line 187: 				$default_image = "http://www.publishersweekly.com/images/data/$data{'image__file'}";
    line 188: 			}
    line 189: 		}
    line 190: 		else {
    line 191: 			$html_title = "BookIt | Publishers Weekly";	
    line 192: 		}
    line 193: 	}
    line 194: 
    line 195: 	if($Templates::path =~ /\/charlie\//) {
    line 196: 			$html_title = "Publishers Weekly's Tribute to Freedom of Expression";
    line 197: 			$twitter_title = "Publishers Weekly's Tribute to Freedom of Expression";
    line 198: 			$meta_description = "Find out how to participate in a special section of the January 19 issue of Publishers Weekly and raise money for international nonprofits dedicated to freedom of expression.";
    line 199: 			$twitter_description = "Find out how to participate in a special section of the January 19 issue of Publishers Weekly and raise money for international nonprofits dedicated to freedom of expression.";
    line 200: 	}
    line 201: 	
    line 202: 	if($Templates::path =~ /\/authorpage\//) {
    line 203: 		my $author = $LayoutManager::url_values{'AUTHORNAME'};
    line 204: 		$author =~ s/-/ /g;
    line 205: 		$author =~ s/([\w']+)/\u\L$1/g;
    line 206: 		$html_title = "Books by $author and Complete Book Reviews";
    line 207: 		$meta_description = "Read more about "" and other books by $author";
    line 208: 	}
    line 209: 
    line 210: 	# use defailts is nothing else found
    line 211: 	if(!$html_title) { $html_title = $default_title; };
    line 212: 	if(!$meta_description) { $meta_description = $default_description; };
    line 213: 	if(!$meta_keywords) { $meta_keywords = $default_keywords; };
    line 214: 	
    line 215: 	$html_title =~ s/\"//g;
    line 216: 	$meta_description =~ s/\"//g;
    line 217: 	$meta_description =~ s/<\/[^>]*>//g;
    line 218: 	$meta_description =~ s/<[^>]*>//g;
    line 219: 	$meta_description =~ s/<\/[^>]*//g;
    line 220: 	$meta_description =~ s/<[^>]*//g;
    line 221: 	$twitter_description =~ s/<\/[^>]*>//g;		
    line 222: 	$twitter_description =~ s/<[^>]*>//g;
    line 223: 	$twitter_description =~ s/<\/[^>]*//g;		
    line 224: 	$twitter_description =~ s/<[^>]*//g;		
    line 225: 	$meta_keywords =~ s/\"//g;
    line 226: 	
    line 227: 	&Templates::SetTitle($html_title);
    line 228: 	&Templates::SetMeta("<meta name=\"keywords\" content=\"$meta_keywords\">");
    line 229: 	&Templates::SetMeta("<meta name=\"description\" content=\"$meta_description\">");
    line 230: 	if($last_modified) {
    line 231: 		&Templates::SetMeta("<meta http-equiv=\"last-modified\" content=\"$last_modified\">");	
    line 232: 	}
    line 233: 	&Templates::SetMeta("<meta property=\"og:type\" content=\"article\"/>"); 
    line 234: 	&Templates::SetMeta("<meta property=\"og:title\" content=\"$html_title\"/>"); 
    line 235: 	&Templates::SetMeta("<meta property=\"og:image\" content=\"$default_image\"/>"); 
    line 236: 	&Templates::SetMeta("<meta property=\"og:description\" content=\"$meta_description\"/>");
    line 237: 	&Templates::SetMeta("<meta property=\"og:site_name\" content=\"PublishersWeekly.com\"/>"); 
    line 238: 
    line 239: 	&Templates::SetMeta("<meta name=\"twitter:card\" content=\"summary\"/>");		
    line 240: 	&Templates::SetMeta("<meta name=\"twitter:site\" content=\"\@publisherswkly\"/>");		
    line 241: 	if($twitter_creator){
    line 242: 		&Templates::SetMeta("<meta name=\"twitter:creator\" content=\"$twitter_creator\"/>");			
    line 243: 	}
    line 244: 	&Templates::SetMeta("<meta name=\"twitter:title\" content=\"$twitter_title\"/>");
    line 245: 	&Templates::SetMeta("<meta name=\"twitter:description\" content=\"$twitter_description\"/>");			
    line 246: 	&Templates::SetMeta("<meta name=\"twitter:image\" content=\"$default_image\"/>"); 
    line 247: 
    line 248: 	
    line 249: 	sub GetLastModified {
    line 250: 		my($timestamp) = @_;
    line 251: 		
    line 252: 		my($mod);
    line 253: 		
    line 254: 		if(length($timestamp > 8)) {
    line 255: 			$mod = substr($timestamp,0,4) . '-' . substr($timestamp,4,2) . '-' . substr($timestamp,6,2);
    line 256: 		}
    line 257: 		
    line 258: 		return $mod;
    line 259: 	}
    line 260:  };
    line 261: &doEval();
    line 262: 1;