【发布时间】:2014-11-09 08:42:35
【问题描述】:
我的任务是将“Perl 样式指南”规则转换为以下代码:
http://kulnet.kuleuven.be/perlcourse/perlingo.html
有没有人看到我到目前为止没有遵守的任何规则? (故意遗漏了头部和功能描述。)
$lnp, $pst1, $pst2 在 config.pl 中设置。
谢谢。
#! /usr/bin/perl
use strict;
use warnings;
use DBI;
require config;
MAIN: {
$lnp->execute( );
while( @data = $lnp->fetchrow_array( ) ) {
my ( $sn, $en, $portDate, $rcvCarrier, $originCarrier ) = @data;
my ( @list ) = ();
if ( $en =~ /^$/ ) {
@list = ( $sn );
}
else {
@list = &calc( $sn...$en );
}
foreach my $prefix( @list ) {
my $user = join "", $cc, $ndc, $prefix;
$pst1->execute( $user, 1 );
if ( $rcvCarrier =~ /^$/ ) {
next;
}
if ( $rcvCarrier eq $originCarrier ) {
next;
}
$pst2->execute( $user, $rcvCarrier, $portDate, 1 );
}
}
}
sub calc {
my( @data ) = @_;
my( @new ) = ( );
my( %test );
for my $item ( @data ) {
my( $suffix ) = chop( $item );
$test{$item}{$suffix}++;
}
for my $base ( keys %test ) {
if ( scalar( keys %{$test{$base}} ) == 10) {
push @new, $base;
next;
}
push @new, $base.$_ for keys %{$test{$base}};
}
if ( $#new < $#data ) {
return calc( @new );
}
return @new;
}
【问题讨论】:
-
“Perl Best Practices”和“Modern Perl”似乎不同意这些指南。我们为什么要尝试应用看起来过时的东西?
-
我认为codereview.stackexchange.com 是发布此问题的更好网站
标签: perl optimization coding-style