in reply to Matching a string that you do not have any really good information about

In all the examples, i notice that in the path, the username immediately follows either 'home', ('Home'), or 'people', so you could use that, if this is always the case. If so, you could do something like this:
... # assume $path is initialized to a path youd like to parse. $path =~ s/^\///; my @parts = split /\//, $path; my $prepath_found = 0; my $username; my $name_taken = 0; foreach my $part (@parts) { if ( $prepath_found == 1 ) { if ( $name_taken ) { die 'serious dain brammage'; } $username = $part; $name_taken = 1; $prepath_found = -1; } if ( $part =~ /^[H|h]ome|people$/ ) { $prepath_found = 1; } } if ( ! defined $username ) { die 'invalid path'; }
I guess it depends on how much checking you want to do, and how clearly defined your path info is.
Also this could be written much more tersely, thought i'd be nice today :)
  • Comment on Re: Matching a string that you do not have any really good information about
  • Download Code