PERL - AD帐户添加 - 检查帐户是否已存在

时间:2011-09-19 23:04:54

标签: perl perl-module

我想创建一个添加AD帐户的脚本,但首先检查重复项。

让我们说 $ first =约翰 $ last = Doe

命名惯例是“DoeJ” 如果“DoeJ”已经存在(例如:Jane Doe),那么它应该是姓氏,名字的前2个字符。例如:“DoeJo”。如果“DoeJo”已经存在,那么姓氏,名字的前3个字符,依此类推......

我怎样才能做到这一点? 我正在寻找斯里普特的例子,因为我是Perl的新手。

2 个答案:

答案 0 :(得分:3)

我只是想在睡觉之前破解一下。对不起,我现在懒得解释一下,但我确信你会在perldoc寻找任何特别的东西时找到相当多的东西。

@Everybody:如果您愿意,请随意评论,修改,扩展,美化,无论此代码如何。

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my %accounts;

while (<DATA>) {
    my ( $id, $first_name, $last_name ) = split;
    my $account_name = $last_name;

    for my $letter ( split ( "" => $first_name ) ) {
        $account_name .= $letter;
        last unless exists $accounts{ $account_name };
    }

    my ( $prefix, $suffix ) = ( $account_name, 0 );
    while ( exists $accounts{ $account_name } ) {
        $account_name = $prefix . ++$suffix;
    }

    $accounts{ $account_name } = "$id: $first_name $last_name";
}

print Dumper(\%accounts);

__DATA__
1 Jane Doe
2 John Doe
3 Joho Doe
4 John Doe
5 John Doe
6 John Doe

答案 1 :(得分:1)

始终检查CPAN! CPAN是Comprehensive Perl Archive Network,具有数百个可用于特定任务的Perl模块。

恰好有一个Win32::AD模块,它看起来就像你想做的那样。 (你 Windows上。对吗?如果没有,你可能需要回到LDAP。这是Perl Monks的一个例子。

我想问题是Perl你知道多少。有一个名为perldoc的Perl命令非常有用。例如:

C:> perldoc Win32::AD

将打印出Win32 :: AD模块的文档。如果没有打印,则可能没有安装模块。还有另一个名为cpan的命令,允许您下载并指定所需的CPAN模块。我不知道你是在Windows,Linux等等,我不知道你是否在Windows上,无论你是使用ActiveState还是Strawberry Perl,所以我不能给你更多帮助。< / p>

如果您是Perl的新手,可能需要查看Llama Book。这是Perl书的一个很好的开始,我最大的抱怨是它在面向对象的Perl编程方面没有做太多的事情,这在近年来变得非常重要。

我通常建议您浏览Perl 5 tutorials,它将涵盖复杂的数据结构(想象一下包含其他哈希值的哈希数组)。然后,一旦了解了引用的工作原理,请阅读面向对象编程的开始教程。

如果您可以向我们提供有关您的情况的更多详细信息(Windows与Linux,您对Perl的熟悉程度,是否了解CPAN等),我们可以为您提供更多帮助。