小编Gen*_*neQ的帖子

当Perl中出现不好的事情时,croak()或die()会更好吗?

perlcritic投诉,以下代码,一些样板DBI的东西完全正常,应该croak代替die:

# Connect to database
my $db_handle = DBI->connect( $url, $user, $password ) or die $DBI::errstr;
Run Code Online (Sandbox Code Playgroud)

所有这些,虽然死对我来说似乎很好.

我会想到一个武士Perl战士,当事情出错时,呱呱声不如实际死亡.开玩笑

我为什么要croak代替die

不听取perlcritic建议的后果是什么?

error-handling perl coding-style perl-critic

17
推荐指数
2
解决办法
7335
查看次数

如何使用Perl 6中的Perl 5模块?

是从Rakudo Perl 6使用CPAN的Perl 5模块的方法吗?

例如,如何在Perl 6中使用尚未移植的古老的Perl 5模块CGI.

更新:

这个早期Perl 6模块的这个时髦代码是什么:

use CGI:from<perl5>;
Run Code Online (Sandbox Code Playgroud)

是否使用":from"指令来唤起某种Perl 5兼容层.似乎找不到任何关于它的文档.

perl cpan rakudo raku

14
推荐指数
2
解决办法
1548
查看次数

CPAN在OS X中安装Perl模块的位置在哪里?

只是好奇CPAN在OS X中默认安装所有Perl模块的地方.

macos perl cpan

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

如何声明Perl模块的版本号?

我以为我知道如何声明模块的版本号.但在现代Perl博客Modern Perl Books上阅读了文章"$ VERSION Confusion"之后; 我现在比起初更困惑.(无知确实很幸福.)并不是说我有关于"完美"代码的问题,但我真的很好奇为什么这样一个微不足道的问题显然没有这种成熟语言的明确答案.

希望SO社区能够找到这个问题的明确答案,因为Perl黑客有更好的事情要做,而不是争论声明版本号的不同方法.

syntax perl coding-style

10
推荐指数
3
解决办法
2538
查看次数

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

如何使用OS X中的shell脚本以编程方式将FLV视频文件转换为MP4?

我想批量转换包含数百个FLV文件的目录,以便每个文件都具有MP4等效项.我正在尝试通过编写shell脚本并从终端运行它来自动执行此过程.我该怎么做呢?大多数可用的指令都是针对使用ffmpeg的Linux,但我认为OS X没有它.谢谢.

unix macos shell video-processing transcoding

9
推荐指数
2
解决办法
8278
查看次数

为什么Apache抱怨我的mod_perl程序"断开连接使1个活动语句句柄无效"?

disconnect会使1个活动语句句柄无效(在断开连接之前,destroy语句处理或调用它们)

从MySQL获取数据的以下代码成功执行,但会导致Apache在其错误日志中生成以上消息:

my $driver   = "mysql";
my $server   = "localhost:3306";
my $database = "test";
my $url      = "DBI:$driver:$database:$server";
my $user     = "apache";
my $password = "";

#Connect to database
my $db_handle = DBI->connect( $url, $user, $password ) 
    or die $DBI::errstr;

#SQL query to execute
my $sql = "SELECT * FROM tests WHERE id=?";

#Prepare SQL query
my $statement = $db_handle->prepare($sql)
        or die "Couldn't prepare query '$sql': $DBI::errstr\n";

#Execute SQL Query
$statement->execute($idFromSomewhere)
    or die "Couldn't execute query '$sql': $DBI::errstr\n";

#Get query …
Run Code Online (Sandbox Code Playgroud)

mysql apache perl dbi

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

如何在Perl中实现RESTful API?

我正在尝试在Perl中实现RESTful API.我目前的想法是简单地用正则表达式解析path_info,然后将请求分派给适当的子例程,然后该子例程将为请求的资源吐出JSON,XML甚至XHTML.

例如,要检索有关用户1234的信息,RESTful客户端应该在以下位置找到它:

http://example.com/model.pl/users/1234

下面是我第一次尝试实现RESTful API的框架代码:

model.pl:

#!/usr/bin/perl -w
use strict;
use CGI;

my $q = CGI->new();

print $q->header('text/html');

my $restfuluri  = $q->path_info;

if      ($restfuluri =~ /^\/(questions)\/([1-9]+$)/) { questions($1, $2); }
elsif   ($restfuluri =~ /^\/(users)\/([1-9]+$)/)     { users($1, $2); }


sub questions
{
      my $object = shift;
      my $value  = shift;

      #This is a stub, spits out JSON or XML when implemented.
      print $q->p("GET question : $object -> $value");
}

sub users
{
      my $object = shift;
      my $value  = …
Run Code Online (Sandbox Code Playgroud)

rest perl

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

为什么Microsoft Word 2007中的VBA IDE的Intellisense会继续更改特定变量类型名称的大小写?

这是我曾经问过的最奇怪的问题.我甚至不确定如何表达它.我记得在VB6 IDE中发生过这样的事情,但我忘记了修复.如果是这种情况,那么这是VB IDE中一个非常老的错误.

这是问题所在:

当我意外输入时,我正在写一个简单的MS Word宏:

Dim cell as Cell
Run Code Online (Sandbox Code Playgroud)

这激活了可怕的IDE错误.现在,无论我做什么; 删除模块,在IDE外面编辑它或者其他任何东西,IDE的intellisense将变量类型"Cell"格式化为"cell"

如果我命名一个新变量:

Dim tcell as Cell
Run Code Online (Sandbox Code Playgroud)

IDE将其更改为:

Dim tcell As cell
Run Code Online (Sandbox Code Playgroud)

这激怒了我永无止境.我尝试了一切无济于事.即使我在IDE之外编辑模块文件(.bas)并重新导入它,也会发生这种情况.

我怎么能阻止这种疯狂?

更新

显然这种行为不是错误,而是设计.见答案.

vba ms-office

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

如何以编程方式添加对VBA项目的引用?

我正在部署一个需要Scripting.DictionaryRegExp的早期绑定样式的VBA模块.

可以预料,该脚本在另一台计算机上运行时会失败.用户必须转到VBA IDE中的Tools-> Reference并手动添加对这两个库的引用以使其工作.

因此存在问题.要求非技术最终用户转到IDE并手动添加引用要求过多.

另一种方法是重写整个(由其他人编写的非常长的脚本)以使用后期绑定.如果有其他方法,我宁愿不采取这条道路.

作为一个改变,有些人建议以编程方式添加引用,如下所示:

Application.VBE.ActiveVBProject.References.AddFromFile [Path to library]

  1. 这是正确的解决方案,如果有的话,这个策略有任何缺点吗?
  2. 如果没有,是否有其他方法可以使代码保持早期绑定,但不需要用户手动添加引用.

也欢迎直接调用Win32/64 API的建议.

谢谢.

vba

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