2013-04-04 26 views
0

這個腳本是完美的costum twitter URL縮短,但由於某種原因,它只是開始把斷開的鏈接。 現在所有的鏈接都被打破,即使那些以前的鏈接都很好。 它顯示在twitter domain.com/p(somenumber),它在瀏覽器中打開該URL,而不是重定向到發佈。我猜這個問題出現在這個Perl代碼中,它是在twitter上自動檢查WordPress的帖子。Twitter的URL永久破解的WordPress的帖子

#!/usr/bin/perl -s 

use strict; 

use Data::Dumper; 
use XML::Simple; 

use Net::Twitter; 
use Scalar::Util 'blessed'; 
use WWW::Facebook::API; 
use JSON::Any; 

use lib '/var/www/perl/.'; 

use MyLib::DB; 
use MyLib::Settings; 

my $settings = new Settings(); 
my $config = $settings->getConfig(); 

my $db = new DB(
        dsn   =>$config->{sql_connection}->{dsn}, 
        database =>$config->{sql_connection}->{database}, 
        server  =>$config->{sql_connection}->{server}, 
        login  =>$config->{sql_connection}->{login}, 
        password =>$config->{sql_connection}->{password} 
); 

my %posts = $db->getList('select * from add_ready_post where wp_id > (select max(wp_id) from add_ready_post where is_sent=1) and post_title <> "" limit 1;'); 

my $nt = Net::Twitter->new(legacy => 0); 
my $nt = Net::Twitter->new(
    traits => [qw/OAuth API::REST/], 
    consumer_key  => '', 
    consumer_secret  => '', 
    access_token  => '', 
    access_token_secret => '', 
); 

map { 
    my $message = $posts{$_}[4]; 
    my $id = $posts{$_}[0]; 
    my $url = ' domain.com/p' . $posts{$_}[1]; 
    if ($message ne '') 
    { 
#  print 'Original: ' . $message . "\n"; 
     if (length($message) < 110) 
     { 
      $message = $message . "."; 
     } 
     if (length($message) > 110) 
     { 
      $message = substr($message, 0, 110); 
      $message =~ /.*(\s\w+)$/i; 
      my $newMessage = substr($message, 0, index($message, $1)); 
      $message = $newMessage . '...'; 
     } 

#  print 'Result : ' . $message . $url . "\n"; 

     my $result = $nt->update($message . $url); 
#  print Dumper($result); 

#  print "\n"; 

     my $sql = "UPDATE add_ready_post SET is_sent=1 WHERE id=" . int($id) . ";"; 
     $db->execute($sql); 

    } 
} keys %posts; 

回答

2

你可能會得到與「不是一個真正的問題」封閉 - 但無論如何 - 談幾點看法:

有不知道該怎麼「做」你MyLib::DB;,所以不知道不能分析代碼什麼包含%posts散列。

使用use warnings; - 例如,你會得到$nt redefined消息...

my $nt = Net::Twitter->new(legacy => 0); 
my $nt = Net::Twitter->new(

以這種方式使用map {是不是最佳做法。它將使用

foreach my $post (keys %posts) { 
} 

時,消息將不會匹配在這裏,你會得到什麼太大可讀?那麼如果指數返回-1呢?

$message =~ /.*(\s\w+)$/i; 
my $newMessage = substr($message, 0, index($message, $1)); 

而當消息將只包含空格嗎?想想:

if ($message ne '') 

這裏是更多...我知道比你學習Perl的,但儘量將問題分解到管理的部分,並要求一個真正的問題。

相關問題