skasch has asked for the wisdom of the Perl Monks concerning the following question:
I am a beginner with Perl and seek wisdom of the monks
What i want is to read a file, run a regex on its lines and when matching substitute some strings according to a map.
Mostly that does work but on a specific line, i cannot get my regex to match and I like to understand why
This is an excerpt of one of the files that should be processed
"user.name@domain.com:Calendar/personal" = <*I0>; }; SubscribedFolders = ( "user@domain.com:Calendar/BCA-513DD600-1B-6967B200" ); FoldersOrder = ( personal, "user_A_domain_D_com_BCA-513DD600-1B-6967B200", "7D03-5682B480-975-5FFE8000", "7D03-5682B480-977-5FFE8000" ); FreeBusyExclusions = { "user.name@domain.com:Calendar/personal" = <*I0>; "user@domain.com:Calendar/BCA-513DD600-1B-6967B200" = <*I1>;
And this is my Code
#!/usr/bin/perl use strict; use warnings; use autodie; my %replacements = ( 'user.name@domain.com' => 'uname', 'user@domain.com' => 'user', ); open( my $readFile, '<', "sampleFile" ); while ( <$readFile> ) { # if contains :Calendar and is suffixed with / # or :Contacts with same suffix or Users prefixed # with / or is an email-address followed by " = if ( m/:Calendar(?=\/)/, m/:Contacts(?=\/)/, m/(?<=\"\/)Users/, m/.+@.+\"\s=/) { # then replace every occurrence as in list foreach my $key ( sort keys %replacements ) { s/\b$key\b/$replacements{$key}/g; } } print $_; }
And this is the result
"uname:Calendar/personal" = <*I0>; }; SubscribedFolders = ( "user@domain.com:Calendar/BCA-513DD600-1B-6967B200" ); FoldersOrder = ( personal, "user_A_domain_D_com_BCA-513DD600-1B-6967B200", "7D03-5682B480-975-5FFE8000", "7D03-5682B480-977-5FFE8000" ); FreeBusyExclusions = { "uname:Calendar/personal" = <*I0>; "user:Calendar/BCA-513DD600-1B-6967B200" = <*I1>;
I do not understand why my regex does not match the string under "Subscribed Folders" any help is greatly appreciated
cheers, Sascha
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Cannot get Perl to match a specific string in my textfile
by hippo (Archbishop) on Jan 12, 2017 at 15:01 UTC | |
|
Re: Cannot get Perl to match a specific string in my textfile
by skasch (Novice) on Jan 12, 2017 at 15:06 UTC | |
|
Re: Cannot get Perl to match a specific string in my textfile
by Marshall (Canon) on Jan 13, 2017 at 00:56 UTC |