annotate COG/bac-genomics-scripts/rename_fasta_id/rename_fasta_id.pl @ 3:e42d30da7a74 draft

Uploaded
author dereeper
date Thu, 30 May 2024 11:52:25 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
1 #!/usr/bin/perl
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
2
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
3 #######
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
4 # POD #
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
5 #######
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
6
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
7 =pod
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
8
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
9 =head1 NAME
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
10
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
11 C<rename_fasta_id.pl> - rename fasta IDs according to regular expressions
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
12
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
13 =head1 SYNOPSIS
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
14
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
15 C<perl rename_fasta_id.pl -i file.fasta -p "NODE_.+$" -r "K-12_" -n -a c E<gt> out.fasta>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
16
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
17 B<or>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
18
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
19 C<zcat file.fasta.gz | perl rename_fasta_id.pl -i - -p "coli" -r "" -o E<gt> out.fasta>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
20
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
21 =head1 DESCRIPTION
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
22
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
23 This script uses the built-in Perl substitution operator C<s///> to
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
24 replace strings in FASTA IDs. To do this, a B<pattern> and a
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
25 B<replacement> have to be provided (Perl regular expression syntax
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
26 can be used). The leading '>' character for the FASTA ID will be
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
27 removed before the substitution and added again afterwards. FASTA
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
28 IDs will be searched for matches with the B<pattern>, and if found
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
29 the B<pattern> will be replaced by the B<replacement>.
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
30
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
31 B<IMPORTANT>: Enclose the B<pattern> and the B<replacement> in
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
32 quotation marks (' or ") if they contain characters that would be
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
33 interpreted by the shell (e.g. pipes '|', brackets etc.).
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
34
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
35 For substitutions without any appendices in a UNIX OS you can of
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
36 course just use the great
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
37 L<C<sed>|https://www.gnu.org/software/sed/manual/sed.html> (see
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
38 C<man sed>), e.g.:
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
39
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
40 C<sed 's/^E<gt>pattern/E<gt>replacement/' file.fasta>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
41
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
42 =head1 OPTIONS
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
43
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
44 =head2 Mandatory options
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
45
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
46 =over 20
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
47
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
48 =item B<-i>=I<str>, B<-input>=I<str>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
49
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
50 Input FASTA file or piped STDIN (-) from a gzipped file
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
51
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
52 =item B<-p>=I<str>, B<-pattern>=I<str>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
53
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
54 Pattern to be replaced in FASTA ID
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
55
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
56 =item B<-r>=I<str>, B<-replacement>=I<str>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
57
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
58 Replacement to replace the pattern with. To entirely remove the
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
59 pattern use '' or "" as input for B<-r>.
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
60
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
61 =back
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
62
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
63 =head2 Optional options
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
64
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
65 =over 20
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
66
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
67 =item B<-h>, B<-help>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
68
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
69 Help (perldoc POD)
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
70
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
71 =item B<-c>, B<-case-insensitive>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
72
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
73 Match pattern case-insensitive
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
74
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
75 =item B<-g>, B<-global>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
76
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
77 Replace pattern globally in the string
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
78
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
79 =item B<-n>, B<-numerate>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
80
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
81 Append a numeration/the count of the pattern hits to the
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
82 replacement. This is e.g. useful to number contigs consecutively in
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
83 a draft genome.
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
84
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
85 =item B<-a>=I<str>, B<-append>=I<str>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
86
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
87 Append a string after the numeration, e.g. 'c' for chromosome
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
88
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
89 =item B<-o>, B<-output>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
90
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
91 Verbose output of the substitutions that were carried out, printed
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
92 to C<STDERR>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
93
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
94 =item B<-v>, B<-version>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
95
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
96 Print version number to C<STDERR>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
97
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
98 =back
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
99
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
100 =head1 OUTPUT
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
101
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
102 =over 20
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
103
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
104 =item C<STDOUT>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
105
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
106 The FASTA file with substituted ID lines is printed to C<STDOUT>.
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
107 Redirect or pipe into another tool as needed.
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
108
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
109 =back
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
110
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
111 =head1 EXAMPLES
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
112
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
113 =over
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
114
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
115 =item C<perl rename_fasta_id.pl -i file.fasta -p "T" -r "a" -c -g -o>
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
116
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
117 =back
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
118
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
119 =head1 VERSION
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
120
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
121 0.1 09-11-2014
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
122
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
123 =head1 AUTHOR
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
124
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
125 Andreas Leimbach aleimba[at]gmx[dot]de
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
126
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
127 =head1 LICENSE
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
128
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
129 This program is free software: you can redistribute it and/or modify
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
130 it under the terms of the GNU General Public License as published by
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
131 the Free Software Foundation; either version 3 (GPLv3) of the License,
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
132 or (at your option) any later version.
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
133
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
134 This program is distributed in the hope that it will be useful, but
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
135 WITHOUT ANY WARRANTY; without even the implied warranty of
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
136 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
137 General Public License for more details.
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
138
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
139 You should have received a copy of the GNU General Public License
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
140 along with this program. If not, see L<http://www.gnu.org/licenses/>.
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
141
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
142 =cut
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
143
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
144
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
145 ########
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
146 # MAIN #
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
147 ########
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
148
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
149 use strict;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
150 use warnings;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
151 use autodie;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
152 use Getopt::Long;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
153 use Pod::Usage;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
154
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
155 ### Get the options with Getopt::Long
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
156 my $Input_File; # input fasta file
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
157 my $Pattern; # pattern to search for in the FASTA IDs
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
158 my $Replacement; # regex to replace pattern with
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
159 my $Opt_Case; # substitute case-insensitive
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
160 my $Opt_Global; # substitute pattern globally in string
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
161 my $Opt_Numerate; # append the count of the performed substitions to each replacement regex
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
162 my $Append; # append an additional string after $Opt_Numerate
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
163 my $Opt_Output; # print substitutions to STDERR
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
164 my $VERSION = 0.1;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
165 my ($Opt_Version, $Opt_Help);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
166 GetOptions ('input=s' => \$Input_File,
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
167 'pattern=s' => \$Pattern,
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
168 'replacement=s' => \$Replacement,
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
169 'case-insensitive' => \$Opt_Case,
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
170 'global' => \$Opt_Global,
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
171 'numerate' => \$Opt_Numerate,
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
172 'append:s' => \$Append,
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
173 'output' => \$Opt_Output,
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
174 'version' => \$Opt_Version,
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
175 'help|?' => \$Opt_Help);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
176
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
177
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
178
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
179 ### Run perldoc on POD
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
180 pod2usage(-verbose => 2) if ($Opt_Help);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
181 die "$0 $VERSION\n" if ($Opt_Version);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
182 if (!$Input_File || !$Pattern) {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
183 my $warning = "\n### Fatal error: Options '-i' or '-p' or their arguments are missing!\n";
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
184 pod2usage(-verbose => 1, -message => $warning, -exitval => 2);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
185 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
186
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
187
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
188
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
189 ### Pipe input from STDIN or open input file
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
190 my $Input_Fh;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
191 if ($Input_File eq '-') { # file input via STDIN
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
192 $Input_Fh = *STDIN; # capture typeglob of STDIN
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
193 } else { # input via input file
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
194 open ($Input_Fh, "<", "$Input_File");
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
195 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
196
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
197
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
198
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
199 ### Parse FASTA file
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
200 my $Substitution_Count = 0; # count substitutions
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
201 while (<$Input_Fh>) {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
202 chomp;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
203
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
204 # only substitute in FASTA ID lines
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
205 if (/^>/) {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
206 # only substitute if pattern found, case-sensitive or case-INsensitive
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
207 if (/$Pattern/ || (/$Pattern/i && $Opt_Case)) {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
208 $_ = substitute_string($_); # subroutine
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
209
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
210 # "reprint" FASTA IDs, which don't fit the pattern
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
211 } else {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
212 print "$_\n";
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
213 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
214
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
215 # "reprint" sequence/non-ID lines of FASTA files
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
216 } else {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
217 print "$_\n";
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
218 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
219 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
220 print STDERR "$Substitution_Count substitutions have been carried out\n";
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
221
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
222 exit;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
223
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
224
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
225 #############
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
226 #Subroutines#
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
227 #############
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
228
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
229 ### Subroutine to rename headers/ID lines of the FASTA file
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
230 sub substitute_string {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
231 my $string = shift;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
232 $string =~ s/^>//; # get rid of '>', append afterwards
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
233
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
234 print STDERR "$string " if ($Opt_Output); # optional verbose output to STDERR
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
235 $Substitution_Count++; # count occurences of carried out substitutions
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
236
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
237 # substitutions
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
238 if ($Opt_Global && $Opt_Case) {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
239 $string =~ s/$Pattern/$Replacement/gi;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
240 } elsif ($Opt_Case) {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
241 $string =~ s/$Pattern/$Replacement/i;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
242 } elsif ($Opt_Global) {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
243 $string =~ s/$Pattern/$Replacement/g;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
244 } else {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
245 $string =~ s/$Pattern/$Replacement/;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
246 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
247
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
248 # output to STDOUT, optionally STDERR
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
249 print ">$string";
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
250 print STDERR "-> $string" if ($Opt_Output);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
251 if ($Opt_Numerate) {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
252 print "$Substitution_Count";
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
253 print STDERR "$Substitution_Count" if ($Opt_Output);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
254 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
255
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
256 if ($Append) {
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
257 print "$Append";
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
258 print STDERR "$Append" if ($Opt_Output);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
259 }
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
260
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
261 print "\n";
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
262 print STDERR "\n" if ($Opt_Output);
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
263
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
264 return 1;
e42d30da7a74 Uploaded
dereeper
parents:
diff changeset
265 }