Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: How do I get only one item out of attribute?

by imp (Priest)
on Aug 21, 2006 at 16:28 UTC ( #568599=note: print w/replies, xml ) Need Help??


in reply to How do I get only one item out of attribute?

The easiest way is to use a regular expression.
my $dn = 'corpid=xxxxxx,ou=people,o=corp'; my ($ou) = $dn =~ /ou=([^,]*)/; print "ou = $ou\n";
You could also create a hash of the tokens like this if you need to test other values:
my $dn = 'corpid=xxxxxx,ou=people,o=corp'; my %tokens = map {split /=/} split /,/, $dn; print "ou = $tokens{ou}\n";
This approach first splits the $dn variable into pairs of this form:
  corpid=xxxxxx
  ou=people
  o=corp
It then splits each of those pairs by the '=', which results in this list:
  corpid,
  xxxxxx,
  ou,
  people,
  o,
  corp
Which is equivalent to defining a hash like this:
my %tokens = ( corpid => 'xxxxxx', ou => 'people', o => 'corp', );

Replies are listed 'Best First'.
Re^2: How do I get only one item out of attribute?
by izut (Chaplain) on Aug 21, 2006 at 17:18 UTC

    Another hint is use the following, which I think is more readable :-)

    my $dn = 'corpid=xxxxxx,ou=people,o=corp'; my ($ou) = $dn =~ /ou=(.*?),/; print "ou = $ou\n";

    From perldoc perlre:

    Sometimes minimal matching can help a lot. Imagine you’d like +to match everything between "foo" and "bar". Initially, you write somet +hing like this: $_ = "The food is under the bar in the barn."; if ( /foo(.*)bar/ ) { print "got <$1>\n"; } Which perhaps unexpectedly yields: got <d is under the bar in the > That’s because ".*" was greedy, so you get everything between t +he first "foo" and the last "bar". Here it’s more effective to use mini +mal matching to make sure you get the text between a "foo" and the +first "bar" thereafter. if ( /foo(.*?)bar/ ) { print "got <$1>\n" } got <d is under the >

    Igor 'izut' Sutton
    your code, your rules.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://568599]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (5)
As of 2021-04-21 01:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?