954,523 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Splitting a string with multiple "_"

I am trying to split a file into 2 parts.

File format is following: filename_status_date.filetype

and the files are:

apple_india_20110218091255.txt
apple_india_20110221112444.txt
apple_india_20110301112444.txt

I need to split so that first part carries "apple_india"
and second part carries the "20110301112444.txt".

I tried the following:

my ($fruit,$end)=split(/\_/);


But that splits the file right after the first "_" as

$fruit = apple
$end = india

How can I make it work. My arguments in Split() is wrong.
Any help

boshu
Light Poster
48 posts since Jan 2011
Reputation Points: 10
Solved Threads: 0
 
#!/usr/bin/perl
use strict;
use warnings;

while (<DATA>){
    my ($fruit,$end)=split(/\_ #Match an underscore
                           (?!.*\_) #Negative lookahead.
                                    #Match only if not followed by characters
                                    #followed by another underscore
                           /x);     #x means allow multi-line regex with comments
    print "My fruit = $fruit\n";
    print "My end = $end\n";
}
__DATA__
apple_india_20110218091255.txt
apple_india_20110221112444.txt
apple_india_20110301112444.txt


http://www.regular-expressions.info/lookaround.html

d5e5
Practically a Posting Shark
810 posts since Sep 2009
Reputation Points: 159
Solved Threads: 159
 

Perfect solution.
And thanks for wonderful explanation David!

Learned a few new things here...

boshu
Light Poster
48 posts since Jan 2011
Reputation Points: 10
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: