我的同行问我,你最后会找到@ if more than one@`的样子.
例:
j@ssi@aliencoders.com@..coding.com
Run Code Online (Sandbox Code Playgroud)
所以它应该显示j@ssi@aliencoders.com为用户名和 ..coding.com域名.Perl中是否有任何一个衬垫正则表达式可以获得所需的输出?
如果密钥存在于%hash中,我试图将键值对放在%hash1上.数组中有一个元素,%hash ex上没有条目:@array =(1,2,3,4,5); #there在%hash处没有密钥1的哈希条目
所以我认为map会完成这项工作,我会在我的新哈希中获得4个键,即%hash1,但它会提供5个键.与此同时,我尝试了foreach并且它起作用了.我妄想我们可以用地图取代foreach,但这个案例让我思考.谁能解释一下,我的逻辑出错了?
#Method 1. Comment it while using Method 2
%hash1 = map { $_=>$hash{$_} if(exists $hash{$_}) } @array;
# Method 2. Comment whole loop while using method 1
foreach (@array){
$hash1{$_} = $hash{$_} if(exists $hash{$_});
}
Run Code Online (Sandbox Code Playgroud) 以下是示例代码:
my $test = "Mike Xavier Smith/123-45-1111/student";
my $name = substr( $test, 0, index($test, "/") );
my $ssn = substr( $test,index($test,"/"));
my $type = substr( $test,index($test, "/", 2) );
print "$name, $ssn, $type \n";
exit;
Run Code Online (Sandbox Code Playgroud)
输出:Mike Xavier Smith,/ 123-45-1111 /学生,/ 123-45-1111 /学生
这行substr($ test,index($ test,"/",2)); #offset应该是第二次出现的"/",这意味着它应该打印/学生.
但为什么它是从第一次出现"/"打印?
我正在研究IIS和微软的知识库CMS,但我想切换到开源和基于Linux的CMS,它可以轻松处理知识库管理的东西.
我知道Plone可能是最好的解决方案.但
如何将所有数据从Microsoft知识库迁移到Plone?
任何的想法?
我有一个与#结合的元素数组,我希望将其放入哈希中,该数组的第一个元素作为键,并且在将数组元素拆分为#之后将其作为值,但它不会发生.
例如:
my @arr = qw(9093#AT#BP 8111#BR 7456#VD#AP 7786#WS#ER 9431#BP ) #thousand of data
Run Code Online (Sandbox Code Playgroud)
我想要的是
$hash{9093} = [AT,AP];
$hash{8111} = [BR]; and so on
Run Code Online (Sandbox Code Playgroud)
我们如何使用map函数完成它.否则我需要使用for循环,但我希望使用map函数.