Archive for the Programming Category

Perl Fundamentals

Posted August 21, 2008 at 10:46 pm in Programming | No Comments

Perl started out as the “Swiss army knife” of computer languages and was used primarily by system administrators, but over time it’s grown into an immensely robust language used by web-developers and programmers worldwide.

The Comprehensive Perl Archive Network is a great resource for already developed Perl modules. More than likely someone has created a module to perform the task you’re trying to accomplish.

Perl programs should start with the following line of code:

#!/usr/bin/perl

This line of code passes the rest of the code to the Perl interpreter, which is located at /usr/bin/perl (depends on your configuration).

A Perl comment uses #.

Arithmetic operators in order of precedence: EXPONENT **, (Unary Minus), MULTIPLY *, DIVISION /, ADD +, and SUBTRACT -. The MODULO % operator has the same precedence as * and /.

Bitwise operators are: AND &, OR |, XOR ^, and NOT ~.

Comparison operators: EQUAL TO ==, NOT EQUAL TO !=, LESS THAN <, GREATER THAN >, LESS THAN OR EQUAL TO <=, and GREATER THAN OR EQUAL TO >=.

Balance operator: <==>. This operator will point to the smaller number by indicating a 1 if the smaller number is on the right, -1 if the smaller number is on the left, or 0 if they are equal. Think of it like a number line as the arrows represent numbers increasing and decreasing to infinity and the equal signs representing the line, < -1 = 0 = 1 >.

Boolean operators: AND &&, OR ||, and NOT !.

Endianness

Posted August 19, 2008 at 3:56 pm in Programming | No Comments

Endianness is the attribute of a system that indicates whether integers are represented from left to right or right to left, just like human languages. This may sound odd but if you’ve ever tried to read a book in English and another book in Japanese, you’ll notice that one flows from left to right and another from right to left. If you tried to read the book in Japanese from left to right, you would spend a lot of time attempting to decipher what that book was about.

There are two types of endianness, big and little. Big endian representation is in the left to right fashion and has the left most byte set as the most significant byte (MSB) in a multibyte integer. A simple example is the real number 200. The 2 on the left side indicates that this number is much larger than the number 100. We often learn the binary number system in big endian representation. Little endian representation is in the right to left fashion and has the right most byte set as the most significant byte in a multibyte integer.

Big endian most significant byte of any multibyte data field is stored at the lowest memory address. Little endian means that the least significant byte of any multibyte data field is stored at the lowest memory address.

An easy way to remember these is to think about input to a device. A big endian implementation would require the “big end” (MSB) first while a little endian implementation would require the “little end” first.

Endianness is important to processors as they attempt to read binary data from memory. Intel’s 80×86 is a common little endian processor. Sun’s Java Virtual Machine uses a big endian representation. Endianness is also important to network stacks and the communication field in general. Communicating devices must use the same endian implementation or they will not be able to communicate.

All of the protocols in the TCP/IP suite are big endian and as such, big endian is also known as Network Byte Order which requires the MSB first. Specifically, sin_port and sin_addr members of the sockaddr_in structure must use the big endian implementation when creating network sockets.

Page 3 of 3123