小编Rus*_* C.的帖子

如何使用Perl从纯文本中提取URL?

我需要Perl正则表达式来解析纯文本输入并将所有链接转换为有效的HTML HREF链接.我已经尝试了10个不同的版本,我在网上找到但没有一个看到正常工作.我还测试了StackOverflow上发布的其他解决方案,但这些解决方案似乎都不起作用.正确的解决方案应该能够在纯文本输入中找到任何URL并将其转换为:

<a href="$1">$1</a>
Run Code Online (Sandbox Code Playgroud)

我尝试过的其他正则表达式的一些情况包括:

  1. 一行末尾的URL,后面跟着返回
  2. 包含问号的网址
  3. 以"https"开头的网址

我希望那里的另一个Perl家伙已经有了他们正在使用的正则表达式,他们可以分享.在此先感谢您的帮助!

regex url perl plaintext

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

MySQL触发器更新新行

我们正在两个系统之间进行迁移,并且需要为我们的一个数据库表保留2个字段,这些字段始终保持同步.这是表结构:

CREATE TABLE `example` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `object_id` int(11) NOT NULL DEFAULT '0',
  `value` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `object_id` (`object_id`)
);
Run Code Online (Sandbox Code Playgroud)

每当其中一个系统插入新行时,我们需要将object_id设置为id.我们不能使用'before insert',因为id列是一个auto_increment列,因此在插入之前它的值为NULL,并且由于MySQL'插入'on trigger之后的限制,我不能执行以下操作:

CREATE TRIGGER insert_example 
  AFTER INSERT ON  example 
  FOR EACH ROW 
  SET NEW.object_id = NEW.id;
Run Code Online (Sandbox Code Playgroud)

我无法更新任何一个系统的代码,因此我需要一种方法在数据库端完成此任务.两个系统都将插入新行.我怎么能做到这一点?

mysql sql triggers

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

优化MySQL查询

我们有一个查询当前正在查杀我们的数据库,我知道必须有一种方法来优化它.我们有3个表:

  1. items - 项目表,其中每个项目都有关联的object_id,length,difficulty_rating,rating,avg_rating和status
  2. lists - 列表,基本上是我们用户创建的项目列表
  3. list_items - 包含2列的表:list_id,item_id

我们一直在使用以下查询来显示一个简单的HTML表,该表显示每个列表以及与列表相关的一些属性,包括所包含列表项的属性的平均值:

select object_id, user_id, slug, title, description, items, 
       city, state, country, created, updated,
       (select AVG(rating) from items
          where object_id IN 
              (select object_id from list_items where list_id=lists.object_id) 
            AND status="A"
       ) as 'avg_rating',
       (select AVG(avg_rating) from items
          where object_id IN 
              (select object_id from list_items where list_id=lists.object_id) 
            AND status="A"
       ) as 'avg_avg_rating',
       (select AVG(length) from items 
          where object_id IN 
              (select object_id from list_items where list_id=lists.object_id) 
            AND status="A"
       ) as 'avg_length',
       (select AVG(difficulty_rating) from …
Run Code Online (Sandbox Code Playgroud)

mysql optimization query-optimization

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

SQL查询位置半径内的总点数

我有一个美国所有邮政编码的数据库表,其中包括每个邮政编码的城市,州,纬度和经度.我还有一个点数据库表,每个点都有与之关联的纬度和经度.我希望能够使用1个MySQL查询为我提供zipcodes表中所有唯一城市/州组合的列表,以及该城市/州的给定半径内的总点数.我可以使用以下查询获取唯一的城市/州名单:

select city,state,latitude,longitude
from zipcodes 
group by city,state order by state,city;
Run Code Online (Sandbox Code Playgroud)

我可以使用以下查询获得纬度为"$ lat"和经度为"$ lon"的特定城市100英里范围内的点数:

select count(*) 
from points 
where (3959 * acos(cos(radians($lat)) * cos(radians(latitude)) * cos(radians(longitude) - radians($lon)) + sin(radians($lat)) * sin(radians(latitude)))) < 100;
Run Code Online (Sandbox Code Playgroud)

我无法做的是弄清楚如何以不杀死我的数据库的方式组合这些查询.这是我悲伤的尝试之一:

select city,state,latitude,longitude,
    (select count(*) from points
     where status="A" AND 
          (3959 * acos(cos(radians(zipcodes.latitude)) * cos(radians(latitude)) * cos(radians(longitude) - radians(zipcodes.longitude)) + sin(radians(zipcodes.latitude)) * sin(radians(latitude)))) < 100) as 'points' 
from zipcodes 
group by city,state order by state,city;
Run Code Online (Sandbox Code Playgroud)

表格目前有以下索引:

Zipcodes - `zip` (zip)
Zipcodes - `location` (state,city)
Points - …
Run Code Online (Sandbox Code Playgroud)

mysql query-optimization geolocation

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

为什么Perl的DateTime-> from_epoch返回1969-12-31 23:59:59?

我们正在处理API的数据,该API返回以下格式的日期/时间值:

1061943540000
Run Code Online (Sandbox Code Playgroud)

当我在此页面上使用该工具时,它将值转换为以下正确日期:

Tue Aug 26 2003 17:19:00 GMT-0700 (PDT)
Run Code Online (Sandbox Code Playgroud)

我们使用以下Perl代码来转换脚本中的日期/时间:

use DateTime;
my $dt = DateTime->from_epoch(epoch => $time);
Run Code Online (Sandbox Code Playgroud)

但是,这会产生以下不正确的输出:

1969-12-31 23:59:59
Run Code Online (Sandbox Code Playgroud)

我完全搞砸了为什么这不起作用,并希望有人解释我做错了什么以及我应该使用什么代码来正确转换它.提前致谢!

perl datetime

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

使用XML :: Simple将Perl对象转换为XML

我正在尝试使用XML :: Simple CPAN模块将我们数据库的输出转换为简单的XML结构.问题是,无论我尝试传递给XML :: Simple的选项,返回的输出都不是我所希望的.

我们尝试输出的数据库表只是一堆带有定义的项目:

CREATE TABLE `items` (
  `id` int(8) NOT NULL,
  `name` varchar(40) NOT NULL,
  `manufacturer` varchar(40) NOT NULL,
  `added` datetime NOT NULL,
  PRIMARY KEY  (`id`)
);
Run Code Online (Sandbox Code Playgroud)

这是我们目前使用的Perl代码:

my $SQL = qq| select * from items |;
my $sth = main::DatabaseQuery($SQL);

my $items;
my $count = 0;
while(my $item = $sth->fetchrow_hashref()) {
    $items->[$count] = $item;
    $count++;
}

require XML::Simple;
my $xs = XML::Simple->new(ForceArray => 1, KeepRoot => 1);
my $xml = $xs->XMLout($ref);
Run Code Online (Sandbox Code Playgroud)

这将输出以下XML:

<anon id="10000" name="Item …
Run Code Online (Sandbox Code Playgroud)

xml perl xml-simple

0
推荐指数
1
解决办法
1548
查看次数

Perl从调用模块导入变量

我有一个Perl模块(Module.pm)初始化一些变量,其中一些我想导入($ VAR2,$ VAR3)到其他可能在执行期间加载的子模块.

我目前设置Module.pm的方式如下:

package Module;

use warnings;
use strict;

use vars qw($SUBMODULES $VAR1 $VAR2 $VAR3);

require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw($VAR2 $VAR3);

sub new {
    my ($package) = @_;
    my $self = {};
    bless ($self, $package);
    return $self;
}

sub SubModules1 {
    my $self = shift;
    if($SUBMODULES->{'1'}) { return $SUBMODULES->{'1'}; }

    # Load & cache submodule
    require Module::SubModule1;
    $SUBMODULES->{'1'} = Module::SubModule1->new(@_);    
    return $SUBMODULES->{'1'};
}

sub SubModules2 {
    my $self = shift;
    if($SUBMODULES->{'2'}) { return $SUBMODULES->{'2'}; …
Run Code Online (Sandbox Code Playgroud)

oop perl perl-module

0
推荐指数
1
解决办法
3700
查看次数