我想创建一个添加AD帐户的脚本,但首先检查重复项。
让我们说 $ first =约翰 $ last = Doe
命名惯例是“DoeJ” 如果“DoeJ”已经存在(例如:Jane Doe),那么它应该是姓氏,名字的前2个字符。例如:“DoeJo”。如果“DoeJo”已经存在,那么姓氏,名字的前3个字符,依此类推......
我怎样才能做到这一点? 我正在寻找斯里普特的例子,因为我是Perl的新手。
答案 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等),我们可以为您提供更多帮助。