Welcome to PerlMonks!
Please post the code you are trying, a few lines of example input, and some example output that you expect, following these guidelines: How do I post a question effectively?.
Cheers,
-stevieb
| [reply] |
Hi eplytokp,
at the very least, you should tell us by what you want to replace these words. Also, these words you want to replace, are you supposed to hard code them in the program or are they coming from another source (e.g. a file).
Finally, this seems to be a homework assignment. Please tell us upfront if this is the case. It doesn't mean that we are not willing to help, but we might insist more on seeing your attempts, to help you correct your mistakes.
| [reply] |
Yes, you show no code, the problem description is very vague, you don't say with what the words are to be 'replaced', and yes, this does smell like homework, but...
c:\@Work\Perl\monks>perl -wMstrict -le
"my $s = 'In the table above, the characters themselves, in the first
+column, are links to descriptions of characters';
print qq{'$s'};
;;
my %xlate =
qw(table tooble characters croobles selves others first second
+links loonks);
;;
my ($word) =
map qr{ $_ }xms,
join q{ | },
keys %xlate
;
print $word;
;;
$s =~ s{ ($word) }{$xlate{$1}}xmsg;
print qq{'$s'};
"
'In the table above, the characters themselves, in the first column, a
+re links to descriptions of characters'
(?msx-i: first | selves | table | links | characters )
'In the tooble above, the croobles themothers, in the second column, a
+re loonks to descriptions of croobles'
Update: Caution: long lines: some wraparound may have occurred.
Give a man a fish: <%-(-(-(-<
| [reply] [d/l] [select] |
Sorry for the Unclear question. I am first time in this.
this is somewhat a homework question.Plz help me to sort it out..
the text i will get from another .txt file and the text file will have so many lines
i need to replace some repeating words with comma in each line.
For eg:
These are the-words-ofline-X c:\temp\onefilename.txt with time =10day2h::56m::25s
These are the-words-ofline-Y c:\temp\secondfilename.txt with time =5day3h::46m::45s
at the end i need X,c:\temp\onefilename.txt,10,2,56,25,
Y,c:\temp\secondfilename.txt,5,3,46,45, in an array
| [reply] |
You still show no code (i.e., no effort), so I probably shouldn't respond in this way. Please try to make a greater effort in future.
This uses the \K regex operator, available with Perl versions 5.10 and above. (Update: You should state the Perl version you're working with.) The dd (from Data::Dump) statement at the end shows that the contents of the @lines array have been changed "in place" (the $line scalar is aliased to each element of the array).
c:\@Work\Perl\monks>perl -wMstrict -le
"use 5.010;
;;
use Data::Dump;
;;
my @lines = (
'X c:\temp\onefilename.txt with time =10day2h::56m::25s',
'Y c:\temp\secondfilename.txt with time =5day3h::46m::45s',
);
;;
for my $line (@lines) {
print qq{'$line'};
$line =~ s{ \G (?: [[:upper:]] \K \s+ | \S+ \K \s+ \D+ | \d+ \K \D+
+) }
{,}xmsg;
print qq{'$line' \n};
}
;;
dd \@lines;
"
'X c:\temp\onefilename.txt with time =10day2h::56m::25s'
'X,c:\temp\onefilename.txt,10,2,56,25,'
'Y c:\temp\secondfilename.txt with time =5day3h::46m::45s'
'Y,c:\temp\secondfilename.txt,5,3,46,45,'
[
"X,c:\\temp\\onefilename.txt,10,2,56,25,",
"Y,c:\\temp\\secondfilename.txt,5,3,46,45,",
]
Please see perlre, perlrequick, and especially perlretut.
Give a man a fish: <%-(-(-(-<
| [reply] [d/l] [select] |