M
Marek
Hello all!
I have a tab separated text file. I want to check, whether the
contents are in the right fields. I have constructed here a little
example. Question is, how to check for right number of tabs between
"pattern" and "number" ... In my example, there is checked only one
wrong example. To be clear I take this example:
(pattern3)\t{4,}(number3)
this is checking 4 or more tabs between pattern3 and number3, which is
wrong. Only 3 tabs are right! So I have to check also for 2 tabs or 1
tab, which would be wrong too ...
Hope this was clear
best greetings marek
#! /usr/local/bin/perl
use warnings;
use strict;
while (<DATA>) {
s/\s+#.+//;
next if /^\s*$/;
if (/(pattern1)\t{2,}(number1)\s*/i) {
print
"Wrong number of tabs between \"$1\" and the number \"$2\" in the line:
\n\t$_\n\n";
}
elsif (/(pattern2)\t{3,}(number2)\s*/i) {
print
"Wrong number of tabs between \"$1\" and the number \"$2\" in the line:
\n\t$_\n\n";
}
elsif (/(pattern3)\t{4,}(number3)\s*/i) {
print
"Wrong number of tabs between \"$1\" and the number \"$2\" in the line:
\n\t$_\n\n";
}
else {
print "\nno match!\n\n";
}
}
__DATA__
pattern1 number1
pattern2 number2
pattern3 number3
pattern1 number1 # wrong number of tabs (2tabs)
pattern2 number2 # wrong number of tabs (3tabs)
pattern3 number3 # wrong number of tabs (4tabs)
pattern2 number2 # wrong number of tabs (1tab)
pattern3 number3 # wrong number of tabs (2tabs)
I have a tab separated text file. I want to check, whether the
contents are in the right fields. I have constructed here a little
example. Question is, how to check for right number of tabs between
"pattern" and "number" ... In my example, there is checked only one
wrong example. To be clear I take this example:
(pattern3)\t{4,}(number3)
this is checking 4 or more tabs between pattern3 and number3, which is
wrong. Only 3 tabs are right! So I have to check also for 2 tabs or 1
tab, which would be wrong too ...
Hope this was clear
best greetings marek
#! /usr/local/bin/perl
use warnings;
use strict;
while (<DATA>) {
s/\s+#.+//;
next if /^\s*$/;
if (/(pattern1)\t{2,}(number1)\s*/i) {
"Wrong number of tabs between \"$1\" and the number \"$2\" in the line:
\n\t$_\n\n";
}
elsif (/(pattern2)\t{3,}(number2)\s*/i) {
"Wrong number of tabs between \"$1\" and the number \"$2\" in the line:
\n\t$_\n\n";
}
elsif (/(pattern3)\t{4,}(number3)\s*/i) {
"Wrong number of tabs between \"$1\" and the number \"$2\" in the line:
\n\t$_\n\n";
}
else {
print "\nno match!\n\n";
}
}
__DATA__
pattern1 number1
pattern2 number2
pattern3 number3
pattern1 number1 # wrong number of tabs (2tabs)
pattern2 number2 # wrong number of tabs (3tabs)
pattern3 number3 # wrong number of tabs (4tabs)
pattern2 number2 # wrong number of tabs (1tab)
pattern3 number3 # wrong number of tabs (2tabs)