这个脚本完全适用于costum twitter URL缩短程序,但由于某种原因它只是开始放置断开的链接。 现在所有的链接都被破坏了,即使是之前的链接也很好。 它在twitter domain.com/p(someumber)上显示,它在浏览器中打开URL而不是重定向到发布。我想问题出在这个Perl代码中,它是在twitter上自动生成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;
答案 0 :(得分: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但尝试将问题分解为可管理的部分并提出一个真实的问题。