小编Rus*_* C.的帖子

使用Perl在日期时间格式之间转换

我们目前正在使用以下列格式提供日期时间的第三方API:

Sat Mar 06 09:00:00 ICST 2010
Fri Feb 19 19:30:00 JDT 2010
Fri Feb 19 19:30:00 PST 2010
Run Code Online (Sandbox Code Playgroud)

但是,我们希望在标准日期时间字段中将这些日期时间对象存储在MySQL中,该字段需要以下格式:

YYYY-MM-DD HH:MM:SS
Run Code Online (Sandbox Code Playgroud)

现在我们正在使用以下代码报告某些时区的错误,例如KDT,JDT和ICST:

use Date::Manip;
use DateTime;
use DateTime::Format::DateManip;

my $date = ParseDate($time);
$date = DateTime::Format::DateManip->parse_datetime($date);
eval{ $time = $date->strftime("%Y-%m-%d %H:%M:%S"); };
Run Code Online (Sandbox Code Playgroud)

您能否建议更好地实现上面的Perl代码,将日期时间对象从API转换为我们服务器上的正确格式和时间,以便插入MySQL日期时间字段?

在此先感谢您的帮助和建议!

mysql perl datetime date-conversion

5
推荐指数
1
解决办法
2万
查看次数

如何从我的cronjob中保留curl输出的邮件?

我编写了一个Perl脚本,它作为每日crontab作业运行,通过CURL将文件上传到Amazon S3.我希望通过电子邮件发送给我的cron作业的输出工作正常,但我不希望该电子邮件包含与CURL上载相关的消息(只有我的脚本输出的那些消息).以下是我现在在每日电子邮件中看到的与CURL相关的消息:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0  230M    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0  230M    0     0    0  544k      0  1519k  0:02:35 --:--:--  0:02:35 1807k
  0  230M    0     0    0 1744k      0  1286k  0:03:03  0:00:01  0:03:02 1342k
  1  230M    0     0    1 2880k      0  1219k  0:03:13  0:00:02  0:03:11 1250k
  1  230M    0     0    1 4016k      0  1198k  0:03:17  0:00:03  0:03:14 1218k …
Run Code Online (Sandbox Code Playgroud)

cron curl

5
推荐指数
2
解决办法
3513
查看次数

在哪里安装gpsbabel所以它适用于GPS :: Babel perl模块?

我很难过,我必须问一个简单的问题,但是为了使用GPS :: Babel perl模块,应该在哪里安装gpsbabel?我似乎无法弄清楚适当的路径,并希望有其他工作的人可以提供帮助.在此先感谢您的帮助!

perl-module babel

5
推荐指数
1
解决办法
496
查看次数

为什么Safari没有从我的Perl CGI脚本中设置cookie?

我有一个基于Perl的网站,试图在用户第一次访问时设置一些cookie,我只是注意到Safari已经停止设置除了第一个传递的cookie之外的所有cookie.首次访问时,应设置两个cookie,即"location"和"referrer".在IE和Firefox中,cookie正确设置,但Safari仅设置"位置"cookie.我尝试更改名称,值等等,我得出的结论是Safari只是设置了两个cookie中的第一个:

以下是设置cookie的代码:

# Add location cookie if necessary
if(!$query->cookie('location') && $user_location) {
    my $cookie = $query->cookie(-name=>'location',-value=>qq|$user_lcoation|,-domain=>".domain.com",-path=>'/',-expires=>'+1Y');
    push(@cookies,$cookie);
}

# Add referrer if first visit
if(!$query->cookie('referrer')) {
    if($ENV{'HTTP_REFERER'}) {
        my $cookie = $query->cookie(-name=>'referrer',-value=>$ENV{'HTTP_REFERER'},-domain=>".domain.com",-path=>'/',-expires=>'+3M');
        push(@cookies,$cookie);
    }
    else {
        my $cookie = $query->cookie(-name=>'referrer',-value=>'unknown',-domain=>".domain.com",-path=>'/',-expires=>'+3M');
        push(@cookies,$cookie);
    }
}

if(scalar(@cookies)) {
    print $query->header(-cookie=>\@cookies);
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试从curl访问网站时得到的结果:

curl -so /dev/null -D - http://domain.com

HTTP/1.1 200 OK
Date: Thu, 18 Feb 2010 20:19:17 GMT
Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.8 mod_perl/2.0.4 Perl/v5.8.8
Set-Cookie: location=Dallas; domain=.domain.com; path=/; …
Run Code Online (Sandbox Code Playgroud)

cookies safari perl missing-cookies

4
推荐指数
1
解决办法
1449
查看次数

从数据库中选择最受欢迎的地方的算法

我们有一个包含地方数据库的网站.对于每个地方,我们的用户都可以采取我们记录的以下操作之一:

  1. 查看 - 查看它的个人资料
  2. 评分 - 按1-5星级评分
  3. 审查 - 审查它
  4. 完成 - 标记他们一直在那里
  5. 愿望清单 - 标记他们想要去那里
  6. 最喜欢的 - 标记它是他们的最爱之一

在我们的数据库表中,每个地方都包含上述每个操作的次数以及用户给出的平均评级.

  • 意见
  • 评级
  • AVG_RATING
  • 完成
  • 愿望清单
  • 喜爱

我们希望能够使用上述信息生成顶部位置列表.理想情况下,我们希望能够使用相对简单的SQL查询生成此列表,而无需执行任何工作来计算其他字段或堆栈排名位置.话虽这么说,因为我们只有大约50,000个地方,我们可以运行夜间cron工作来计算一些字段,例如不同类别的排名,如果它会对我们的顶级位置的整体结果产生有意义的差异.

如果你能就如何考虑将最好的地方冒泡到最顶层,我们应该考虑更重要的标准,并给出这些信息 - 建议MySQL查询需要看起来像是为了选择前10名.

有一点需要注意的是,此时我们不太关心一个受欢迎的地方的新近度 - 这意味着查看总体信息很好,而且最近的数据不需要加权更多.

在此先感谢您的帮助和建议!

mysql algorithm popularity

4
推荐指数
1
解决办法
1025
查看次数

MySQL全文搜索之谜

我们在我们的网站上进行了简单的搜索,使用MySQL全文搜索,由于某种原因,它似乎没有返回正确的结果.我不知道Amazon RDS(我们的数据库服务器所在的位置)或我们请求的查询是否存在某种问题.

这是数据库表的结构:

CREATE TABLE `items` (
  `object_id` int(9) unsigned NOT NULL DEFAULT '0',
  `slug` varchar(100) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`object_id`),
  FULLTEXT KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)

这是一个简单的全文搜索查询在这个表和返回的结果:

select object_id ,slug,name from items where MATCH (name) AGAINST ('+ski*' IN BOOLEAN MODE) order by name;

+-----------+-----------------------------------+------------------+
| object_id | slug                              | name             |
+-----------+-----------------------------------+------------------+
|  10146041 | us/new-hampshire/dartmouth-skiway | Dartmouth Skiway |
+-----------+-----------------------------------+------------------+
Run Code Online (Sandbox Code Playgroud)

如果我改为使用LIKE,我会得到一组不同的结果:

select object_id,slug,name from items where name LIKE "%ski%" order by name; …
Run Code Online (Sandbox Code Playgroud)

mysql full-text-search

4
推荐指数
1
解决办法
2155
查看次数

在Perl LWP :: UserAgent中抑制"Day too big"警告

我有一个相当简单的perl脚本,它使用LWP :: UserAgent模块通过重定向来跟踪URL,以找到它然后存储在MySQL数据库中的最终目标URL.问题是脚本不时会报告如下所示的警告:

Day too big - 25592 > 24855
Sec too small - 25592 < 74752
Sec too big - 25592 > 11647
Day too big - 25592 > 24855
Sec too small - 25592 < 74752
Sec too big - 25592 > 11647
Run Code Online (Sandbox Code Playgroud)

警告没有提供任何其他详细信息,说明为什么会发生这种情况或哪个模块导致问题,但我很确定它与LWP :: UserAgent有关.

我正在使用以下代码初始化代理:

use LWP::UserAgent;
my $ua = LWP::UserAgent->new(cookie_jar => { },requests_redirectable => [ ]);
$ua->agent('Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:9.9.9.9) Gecko/20079999 Firefox/2.0.0.1');
$ua->timeout(10);
Run Code Online (Sandbox Code Playgroud)

我在网上搜索,我发现的唯一结果是以下线程,从未解决过http://www.mail-archive.com/libwww@perl.org/msg06515.html.线程作者认为这些警告与LWP :: UserAgent模块捕获的cookie日期有某种关联.

警告似乎没有影响脚本,但我希望有任何帮助,以更好地了解可能导致此问题的原因以及如何解决它或至少抑制警告消息的建议.在此先感谢您的帮助!

perl lwp lwp-useragent

3
推荐指数
2
解决办法
1955
查看次数

MySQL int定义说明

多年来,当我为MySQL表创建一个类型为bigint(12)的新列时,我一直在假设该字段限制为最多12位的整数.但是,我最近注意到,最多16位的值可以写入bigint(12)定义列中并从中选择,而不会出现任何警告或问题.

有人可以帮助我理解为什么会出现这种情况以及该列定义实际意味着什么?提前致谢!

mysql definition biginteger

3
推荐指数
1
解决办法
765
查看次数

Perl Regex压缩多个换行符

我似乎无法弄清楚正确的语法,但我想要一个Perl正则表达式来查找一行中有两个或更多换行符的位置,并将它们压缩成仅2个换行符.

以下是我今天使用的似乎不起作用的内容:

$string =~ s/\n\n+/\n\n/g;
Run Code Online (Sandbox Code Playgroud)

请让我知道我做错了什么,以及我应该使用的正确的Perl正则表达式.

在此先感谢您的帮助!

regex perl

3
推荐指数
1
解决办法
3984
查看次数

当表单发布到我的脚本时,如何访问URL中传递的参数?

在向我们的网站perl脚本提交表单时,我遇到了mod_rewrite的问题.如果有人在带有url的页面上执行GET请求http://www.example.com/us/florida/page-title,我会使用以下重写规则重写该命令,该规则可正常工作:

RewriteRule ^us/(.*)/(.*)$ /cgi-bin/script.pl?action=Display&state=$1&page=$2 [NC,L,QSA]

现在,如果该页面上有一个表单,我想对同一个URL进行表单发布,并让Mod Rewrite使用相同的重写规则来调用相同的脚本并调用相同的操作.但是,正在发生的是重写规则被触发,正在调用正确的脚本并且正在发布所有表单POST变量,但是,重写的参数(此示例中的操作,状态和页面)未被传递给Perl脚本.我正在使用相同的Perl代码访问这些变量以获取GET和POST请求:

use CGI;
$query = new CGI;
$action = $query->param('action');
$state = $query->param('state');
$page = $query->param('page');
Run Code Online (Sandbox Code Playgroud)

我包括了QSA标志,因为我认为可以解决问题,但事实并非如此.如果我直接对脚本URL进行POST,那么一切正常.我很感激任何帮助,找出为什么目前没有这个工作.提前致谢!

parameters perl post cgi get

2
推荐指数
1
解决办法
6397
查看次数