My take on this is that, as with many things in perl, there is more than one way of doing it. So, you can certainly use function ord as matrixmadhan has shown.
However, like the (Bourne family) shell , there is also an alternate set of relational operators for comparing strings. Here is a (longish) example:
Code:
#!/usr/bin/perl
# @(#) p3 Demonstrate comparison operators.
use warnings;
use strict;
my($first) = "b";
my($last) = "a";
if ( $first == $last ) {
print " Value $first seems equal to $last with \"==\"\n\n";
}
if ( ord($first) > ord($last) ) {
print " ords of value $first seems more than $last with \">\"\n\n";
}
if ( $first gt $last ) {
print " Value $first seems more than $last with \"gt\"\n\n";
}
# Do a few comparisons.
comparison( "aa", "ab");
comparison( "ab", "able");
comparison( "ac", "able");
comparison( "1", "2");
comparison( "11", "2");
comparison( "1 begins this string", "2");
sub comparison {
my($a,$b) = @_;
if ( $a le $b ) {
print " string :$a: is less than string :$b:\n\n";
} else {
print " string :$a: is greater than string :$b:\n\n";
}
}
exit(0);
Which produces:
Code:
% ./p3
Argument "a" isn't numeric in numeric eq (==) at ./p3 line 11.
Argument "b" isn't numeric in numeric eq (==) at ./p3 line 11.
Value b seems equal to a with "=="
ords of value b seems more than a with ">"
Value b seems more than a with "gt"
string :aa: is less than string :ab:
string :ab: is less than string :able:
string :ac: is greater than string :able:
string :1: is less than string :2:
string :11: is less than string :2:
string :1 begins this string: is less than string :2:
For me, this follows the principle of least surprise. See man perlop for details on the operators ... cheers, drl
Hi All,
I have a file that I need to be able to find a pattern match on a line, take the number on that line check if its >0.9 or <0.1 and if this is true write the line to output.out file.
An example of 4 lines in my file is:
1. driver.I177.I11.net010 1.48622200477273e-05
2.... (2 Replies)
Hi, i have a simple control like this:
if(sum>1.0)...
If i try to print sum i get 1.000000 but the check returns true. I think it depends on float precision. How can i modify the check?
thanks (1 Reply)
Hi,
I have the below logic. Here 'X' is a variable having some string.
if
then
echo "i dont need to go to ofc"
else
echo "i need to go to ofc"
Please help me to write it in unix.
Thanks. (2 Replies)
Hi ,
I'm trying to compare fields in the file, I want compare the numbers in each column and get the least value of it.
> cat input_file
0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000
-0.2050 -0.6629 -0.6407 -0.6599
-0.4085 -0.3959 -0.2526 -0.3597
0.3439 0.2275 0.2780 ... (5 Replies)
hi,
I have an data from file where it has
20110904 234516 <<hdd-10#console|0c.57,passed,5,28,READ,0,20822392,8,5,4,0,40,0,-1,0,29909,25000,835,3.3,0,0,0,0,implied,0,0,2011/9/5-2:3:17,2011/9/5-2:3:47,X292_0F15,TAP ,NQ09,J40LTG\r\r\n
I want to remove characters till #console| i.e want... (1 Reply)
continuing from my previous post, whose link is given below as a reference
https://www.unix.com/shell-programming-scripting/171076-shell-scripting.html#post302573569
consider there is create table commands in a file for eg:
CREATE TABLE `Blahblahblah` (
`id` int(11) NOT NULL... (2 Replies)
attempting the hangman program. This was an optional assignment from the professor. I have completed the logical coding, debugging now.
##I have an array $wordString that initializes to a string of dashes
##reflecting the number of letters in $theWord
##every time the user enters a (valid)... (5 Replies)
I have the logic below to look up for matches within the columns between the two files with awk.
In the if statement is where the string comparison is attempted with ==
The issue seems to be with the operands, as
1. when " '${SECTOR}' " -- double quote followed by single quote -- awk matches... (1 Reply)
I have the following code snippet in bash
if ]; then
minm=`echo "$diff" | bc`
fi
It works well for most of the cases. However lets say diff is -0.17 and minm is -0.0017. In such a case the comparison seems to fail. Is the correct way to compare a mixture of positive and... (12 Replies)
Hi,
I have been trying to extract rows that match pattern "cov" with the value next to it to be > 3. The 'cov' pattern may appear either in $3 or $4 (if using ";" as field separator). Below is the example:-
input file
... (7 Replies)
Discussion started by: bunny_merah19
7 Replies
LEARN ABOUT OSF1
xmstringbytecompare
XmStringByteCompare(3X)XmStringByteCompare(3X)NAME
XmStringByteCompare - A compound string function that indicates the results of a byte-by-byte comparison
SYNOPSIS
#include <Xm/Xm.h>
Boolean XmStringByteCompare (s1, s2)
XmString s1;
XmString s2;
DESCRIPTION
XmStringByteCompare returns a Boolean indicating the results of a byte-by-byte comparison of two compound strings.
In general, if two compound strings are created with the same (char *) string using XmStringCreateLocalized in the same language environ-
ment, the compound strings compare as equal. If two compound strings are created with the same (char *) string and the same font list ele-
ment tag set other than XmFONTLIST_DEFAULT_TAG using XmStringCreate, the strings compare as equal.
In some cases, once a compound string is put into a widget, that string is converted into an internal form to allow faster processing.
Part of the conversion process strips out unnecessary or redundant information. If an application then does an XtGetValues to retrieve a
compound string from a widget (specifically, Label and all of its subclasses), it is not guaranteed that the compound string returned is
byte-for-byte the same as the string given to the widget originally. Specifies a compound string to be compared with s2 Specifies a com-
pound string to be compared with s1
RETURN VALUE
Returns True if two compound strings are identical byte-by-byte.
SEE ALSO XmStringCreate(3X), XmStringCreateLocalized(3X)XmStringByteCompare(3X)