小编Eth*_*her的帖子

我怎么能写出看起来不像C的Perl?

我的同事抱怨我的Perl看起来太像C了,这很自然,因为我大部分时间用C编程,而Perl只是一点点.这是我最近的努力.我对易于理解的Perl很感兴趣.我是一个Perl评论家,对于神秘的Perl几乎没有宽容.但考虑到可读性,下面的代码怎么能更多Perlish?

它的目标是进行流量分析,找出哪些IP地址在文件"ips"中给出的范围内.这是我的努力:

#!/usr/bin/perl -w

# Process the files named in the arguments, which will contain lists of IP addresses, and see if 
# any of them are in the ranges spelled out in the local file "ip", which has contents of the
# form start-dotted-quad-ip-address,end-dotted-quad-ip_address,stuff_to_be_ignored
use English;


open(IPS,"ips") or die "Can't open 'ips' $OS_ERROR";

# Increment a dotted-quad ip address
# Ignore the fact that part1 could get erroneously large.
sub increment {
    $ip = shift;

    my ($part_1, $part_2, $part_3, …
Run Code Online (Sandbox Code Playgroud)

perl coding-style

5
推荐指数
7
解决办法
1468
查看次数

如何在Perl中生成列表的所有子集?

我在Perl数组中有一个数学集:(1,2,3).我想找到该集合的所有子集:(1),(2),(3),(1,2),(1,3),(2,3).

有3个元素,这不是太难,但如果设置有10个元素,这将变得棘手.

思考?

perl set subset

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

函数式语言中的程序是否更有可能出现堆栈溢出?

我开始学习ocaml,我非常欣赏语言中递归的力量.但是,我担心的一件事是堆栈溢出.

如果ocaml使用堆栈进行函数调用,它最终是否会溢出堆栈?例如,如果我有以下功能:

let rec sum x =
  if x > 1 then f(x - 1) + x
  else x;;
Run Code Online (Sandbox Code Playgroud)

它必须最终导致堆栈溢出.如果我在c ++(使用递归)中做相同的事情,我知道它会溢出.

所以我的问题是,是否有内置的安全措施来防止函数式语言溢出堆栈?如果不是这样,它们是不是没那么有用,因为上面的求和算法,用带有for循环的过程样式编写,可以处理任何数字(不相关的整数溢出)?

stack-overflow functional-programming imperative-programming tail-call-optimization

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

svn -> 具有多个主干/分支/标签的 git 迁移

我有一个 SVN 存储库,其当前结构如下:

  • 项目1
    • 分支机构
    • 树干
    • 标签
  • 项目2
    • 分支机构
    • 树干
    • 标签

最初具有以下结构:

  • 项目
    • 分支机构
    • 树干
      • 项目1
      • 项目2
    • 标签

也就是说,该项目被分成两个单独的“子存储库”(或者任何你想称呼的名称)

有什么方法可以将其迁移到 git而不丢失历史记录吗?对于这种情况,svn2git 会比 git-svn 更好吗?还有其他迁移工具吗?

编辑:我按照建议尝试了 git svn clone ,但正如我所想,它没有遵循从旧结构到新结构的转变。它仅导入新结构的修订。

svn git git-svn

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

如何禁用特定类的 Log4perl 输出?

我想在项目中使用 Log4perl,但对某个类(在本例中为 Net::Amazon)禁用它。我以为这会很容易,但不知何故我失败了。

我尝试使用

use Log::Log4perl (:easy_init);
use Net::Amazon;

my $amz = Net::Amazon->new( ... );
my $log = Log::Log4perl->easy_init($DEBUG);
$log = $log->get_logger("Net::Amazon");
$log->level($OFF);

$log = $log->get_logger(__PACKAGE__);
$log->info("Hello World.");
Run Code Online (Sandbox Code Playgroud)

不幸的是,Net::Amazon 的调试消息仍然打印到终端。这是为什么?我在这里做错了什么?

perl logging log4perl

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

运行'堆栈溢出'错误

我有一个用Delphi W32编写的应用程序,它处于测试阶段.

在测试PC上,它会在使用几个小时后偶然发出"堆栈溢出"消息.

如何捕获错误并查找原因?

我可以增加堆栈大小吗?

stack-overflow delphi

5
推荐指数
3
解决办法
374
查看次数

Learn Go Or Improve My Python/Ruby Knowledge

I was reading about Go, and I can see that it's very good and can be a language used by many developers in some months, but I want to decide a simple thing: Learn Go or improve my Python or Ruby knowledge?

Years developing with Python: 1
Years developing with Ruby: 0.3

ruby python go

5
推荐指数
3
解决办法
5343
查看次数

经典ASP的推荐参考

我不得不深入研究一大堆遗留的ASP代码.为了掌握该平台的最佳实践,您会建议阅读哪些资源(面向对象,i18n的配置,......)

refactoring asp-classic

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

什么文章讨论"查看10000英尺的代码"?

几年前,我读了一篇关于分析大型代码库的简洁方法的文章.

我们的想法是缩小到目前为止压痕和块长度的模式都是真正可见的.

作者写了关于使用非常小的字体打印代码并查看10英尺后面的结果的文章.我相信作者还有一些工具可以重新格式化代码并为这种技术生成图像,从而可以避免使用纸张.

我无法找到合适的搜索查询来实现这一目标.有人有主意吗?

refactoring code-analysis

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

这种替代机制进行DBI查询有什么问题?

DBI文档中,这是多次执行查询的推荐代码:

$sth = $dbh->prepare_cached($statement);
$sth->execute(@bind);
$data = $sth->fetchall_arrayref(@attrs);
$sth->finish;
Run Code Online (Sandbox Code Playgroud)

但是,我看到许多*查询方法允许传递一个准备好的和缓存的语句句柄来代替查询字符串,这使得这成为可能:

$sth = $dbh->prepare_cached($statement);
$data = $dbh->selectall_arrayref($sth, \%attrs, @bind);
Run Code Online (Sandbox Code Playgroud)

这种方法有什么问题吗?我还没有看到它在野外使用过.

FWIW,我对这两个实现进行了基准测试.第二种方法fetchall_arrayref在第一次实现selectall_arrayref中使用第二次执行时查询连续两行时,速度略微提高(4%).

*支持此功能的查询方法的完整列表如下:

  • selectrow_arrayref - 使用预准备语句的常规方法是fetchrow_arrayref
  • selectrow_hashref - ""fetchrow_hashref
  • selectall_arrayref - ""fetchall_arrayref
  • selectall_hashref - ""fetchall_hashref
  • selectcol_arrayref(实际上没有计数,因为它没有使用第一个代码路径的并行方法,如上所述 - 所以使用这个方法的预准备语句的唯一方法是使用上面的第二个代码路径)

perl bind dbi weak-typing

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