Search This Blog

Friday, May 30, 2008

String Manipulation in Python

Programmers need to know how to manipulate strings for a variety of purposes, regardless of the programming language they are working in. This article will explain the various methods used to manipulate strings in Python.Introduction

String manipulation is very useful and very widely used in every language. Often, programmers are required to break down strings and examine them closely. For example, in my articles on IRC ( and, I used the split method to break down commands to make working with them easier. In my article on sockets (, I used regular expressions to look through a website and extract a currency exchange rate.

This article will take a look at the various methods of manipulating strings, covering things from basic methods to regular expressions in Python. String manipulation is a skill that every Python programmer should be familiar with.

String Methods

The most basic way to manipulate strings is through the methods that are build into them. We can perform a limited number of tasks to strings through these methods. Open up the Python interactive interpreter. Let's create a string and play around with it a bit.

>>> test = 'This is just a simple string.'

Let's take a fast detour and use the len function. It can be used to find the length of a string. I'm not sure why it's a function rather than a method, but that's a whole nother issue:

>>> len ( test )

All right, now let's get back to those methods I was talking about. Let's take our string and replace a word using the replace method:

>>> test = test.replace ( 'simple', 'short' )
>>> testa
'This is just a short string.'

Now let's count the number of times a given word, or, in this case, character, appears in a string:

>>> test.count ( 'r' )

We can find characters or words, too:

>>> test.find ( 'r' )
>>> test [ 18 ]

String Manipulation - Splitting strings, making cases

Splitting a string is something I find myself doing often. The split method is used for this:

>>> test.split()
['This', 'is', 'just', 'a', 'short', 'string.']

We can choose the point that we split it at:

>>> test.split ( 'a' )
['This is just ', ' short string.']

Rejoining our split string can be done using the join method:

>>> ' some '.join ( test.split ( 'a' ) )
'This is just some short string.'

We can play around with the case of letters in our string, too. Let's make it all upper case:

>>> test.upper()

Now let's make it lowercase:

>>> test.lower()
'this is just a short string.'

Let's capitalize only the first letter of the lowercase string:

>>> test.lower().capitalize()
'This is just a short string.'

We can also use the title method. This capitalizes the first letter in each word:

>>> test.title()
'This Is Just A Short String.'

Trading case is possible:

>>> test.swapcase()

We can run a number of tests on strings using a few methods. Let's check to see whether a given string is all upper case:

>>> 'UPPER'.isupper()
>>> 'UpPEr'.isupper()

Likewise, we can check to see whether a string contains only lower case characters:

>>> 'lower'.islower()
>>> 'Lower'.islower()

Checking whether a string looks like a title is simple, too:

>>> 'This Is A Title'.istitle()
>>> 'This is A title'.istitle()

String Manipulation - Numbers and spaces

We can check whether a string is alphanumeric:

>>> 'aa44'.isalnum()
>>> 'a$44'.isalnum()

It is also possible to check whether a string contains only letters:

>>> 'letters'.isalpha()
>>> 'letters4'.isalpha()

Here's how you check whether a string contains only numbers:

>>> '306090'.isdigit()
>>> '30-60-90 Triangle'.isdigit()

We can also check whether a string only contains spaces:

>>> ' '.isspace()
>>> ''.isspace()

Speaking of spaces, we can add spaces on either side of a string. Let's add spaces to the right of a string:

>>> 'A string.'.ljust ( 15 )
'A string. '

To add spaces to the left of a string, the rjust method is used:

>>> 'A string.'.rjust ( 15 )
' A string.'

The center method is used to center a string in spaces:

>>> 'A string.'.center ( 15 )
' A string. '

We can strip spaces on either side of a string:

>>> 'String.'.rjust ( 15 ).strip()
>>> 'String.'.ljust ( 15 ).rstrip()

String Manipulation - Regular Expressions

Regular expressions are a very powerful tool in any language. They allow patterns to be matched against strings. Actions such as replacement can be performed on the string if the regular expression pattern matches. Python's module for regular expressions is the re module. Open the Python interactive interpreter, and let's take a closer look at regular expressions and the re module:

>>> import re

Let's create a simple string we can use to play around with:

>>> test = 'This is for testing regular expressions in Python.'

I spoke of matching special patterns with regular expressions, but let's start with matching a simple string just to get used to regular expressions. There are two methods for matching patterns in strings in the re module: search and match. Let's take a look at search first. It works like this:

>>> result = ( 'This', test )

We can extract the results using the group method:

>>> ( 0 )

You're probably wondering about the group method right now and why we pass zero to it. It's simple, and I'll explain. You see, patterns can be organized into groups, like this:

>>> result = ( '(Th)(is)', test )

There are two groups surrounded by parenthesis. We can extract them using the group method:

>>> ( 1 )
>>> ( 2 )

Passing zero to the method returns both of the groups:

>>> ( 0 )

The benefit of groups will become more clear once we work our way into actual patterns. First, though, let's take a look at the match function. It works similarly, but there is a crucial difference:

>>> result = re.match ( 'This', test )
>>> print result
>>> print ( 0 )
>>> result = re.match ( 'regular', test )
>>> print result

Notice that None was returned, even though “regular” is in the string. If you haven't figured it out, the match method matches patterns at the beginning of the string, and the search function examines the whole string. You might be wondering if it's possible, then, to make the match method match “regular,” since it's not at the beginning of the string. The answer is yes. It's possible to match it, and that brings us into patterns.

The character “.” will match any character. We can get the match method to match “regular” by putting a period for every letter before it. Let's split this up into two groups as well. One will contain the periods, and one will contain “regular”:

>>> result = re.match ( '(....................)(regular)', test )
>>> ( 0 )
'This is for testing regular'
>>> ( 1 )
'This is for testing '
>>> ( 2 )

Aha! We matched it! However, it's ridiculous to have to type in all those periods. The good news is that we don't have to do that. Take a look at this and remember that there are twenty characters before “regular”:

>>> result = re.match ( '(.{20})(regular)', test )
>>> ( 0 )
'This is for testing regular'
>>> ( 1 )
'This is for testing '
>>> ( 2 )

That's a lot easier. Now let's look at a few more patterns. Here's how you can use brackets in a more advanced way:

>>> result = re.match ( '(.{10,20})(regular)', test )
>>> ( 0 )
'This is for testing regular'
>>> result = re.match ( '(.{10,20})(testing)', test )
'This is for testing'

By entering two arguments, so to speak, you can match any number of characters in a range. In this case, that range is 10-20. Sometimes, however, this can cause undesired behavior. Take a look at this string:

>>> anotherTest = 'a cat, a dog, a goat, a person'

Let's match a range of characters:

>>> result = re.match ( '(.{5,20})(,)', anotherTest )
>>> ( 1 )
'a cat, a dog, a goat'

What if we only want “a cat” though? This can be done with appending “?” to the end of the brackets:

>>> result = re.match ( '(.{5,20}?)(,)', anotherTest )
>>> ( 1 )
'a cat'

Appending a question mark to something makes it match as few characters as possible. A question mark that does that, though, is not to be confused with this pattern:

>>> anotherTest = '012345'
>>> result = re.match ( '01?', anotherTest )
>>> ( 0 )
>>> result = re.match ( '0123456?', anotherTest )
>>> ( 0 )

As you can see with the example, the character before a question mark is optional. Next is the “*” pattern. It matches one or more of the characters it follows, like this:

>>> anotherTest = 'Just a silly string.'
>>> result = re.match ( '(.*)(a)(.*)(string)', anotherTest )
>>> ( 0 )
'Just a silly string'

However, take a look at this:

>>> anotherTest = 'Just a silly string. A very silly string.'
>>> result = re.match ( '(.*)(a)(.*)(string)', anotherTest )
>>> ( 0 )
'Just a silly string. A very silly string'

What if, however, we want to only match the first sentence? If you've been following along closely, you'll know that “?” will, again, do the trick:

>>> result = re.match ( '(.*?)(a)(.*?)(string)', anotherTest )
>>> ( 0 )
'Just a silly string'

As I mentioned earlier, though, “*” doesn't have to match anything:

>>> result = re.match ( '(.*?)(01)', anotherTest )
>>> ( 0 )

What if we want to skip past the first two characters? This is possible by using “+”, which is similar to “*”, except that it matches at least one character:

>>> result = re.match ( '(.+?)(01)', anotherTest )
>>> ( 0 )

We can also match a range of characters. For example, we can match only the first four letters of the alphabet:

>>> anotherTest = 'a101'
>>> result = re.match ( '[a-d]', anotherTest )
>>> print result
>>> anotherTest = 'q101'
>>> result = re.match ( '[a-d]', anotherTest )
>>> print result

We can also match one of a few patterns using “|”::

>>> testA = 'a'
>>> testB = 'b'
>>> result = re.match ( '(a|b)', testA )
>>> print result
>>> result = re.match ( '(a|b)', testB )
>>> print result

Finally, there are a number of special sequences. “\A” matches at the start of a string. “\Z” matches at the end of a string. “\d” matches a digit. “\D” matches anything but a digit. “\s” matches whitespace. “\S” matches anything but whitespace.

We can name our groups:

>>> nameTest = 'hot sauce'
>>> result = re.match ( '(?Phot)', nameTest )
>>> ( 'one' )

We can compile patterns to use them multiple times with the re module, too:

>>> ourPattern = re.compile ( '(.*?)(the)' )
>>> testString = 'This is the dog and the cat.'
>>> result = ourPattern.match ( testString )
>>> ( 0 )
'This is the'

Of course, you can do more than match and extract substrings. You can replace things, too:

>>> someString = 'I have a dream.'
>>> re.sub ( 'dream', 'dog', someString )
'I have a dog.'

On a final note, you should not use regular expressions to match or replace simple strings.


Now you have a basic knowledge of string manipulation in Python behind you. As I explained at the very beginning of the article, string manipulation is necessary to many applications, both large and small. It is used frequently, and a basic knowledge of it is critical.

Ref :

Wednesday, May 28, 2008

Connecting to the serial port from eclipse

Installing the serial port plug in in Eclipse

Step 1:
Installation as an Eclipse Plug in via Update Manager:
In Eclipse, choose Help &gt; Software Updates &gt; Find and Install
- Search for New Features to Install, Next
- New Remote Site:
Name = RXTX
- Finish, select proper version, Install All

Step 2:
Get RXTX binaries from

Step 3:
unzip the binaries

NOTE : for step 3 and 4
in case of windows you need to copy files to C:\Program Files\Java\jre1.6.0_05

if you have multipal folder under JAVA\ then choose the last revesion for installtion

ex. if you have jre1.6.0_0_04 and jre1.6.0_05 choose jre1.6.0_05

Step 4:
Copy RXTXcomm.jar into C:\Program Files\Java\jre1.6.0_05\lib\ext

Step 5:
copy rxtxParallel.dll and rxtxSerial.dll to C:\Program Files\Java\jre1.6.0_05\bin

Installtion procedure is compleate.

Using serial port from Eclipse IDE.

Step 1:

under the eclipse goto

windows \ show view \ other or press CTR+Shift+Q ,Q

Step 2:
search for terminal and press OK

Step 3:
now the terminal window will open select the "N" symbol to connect to port from the right hend top side corner.

Step 4:
select "Serial" in connection type and select the parameters in the window followed.

- Mihir Patel.

Wednesday, May 14, 2008

Free, Open Source Screen Capture Utility

Link :

A screen capture / screenshot and edit utility written in java to be
cross platform. It allows the selection of an area with instant,
inplace markup and annotation ability, then copy to clipboard or save
to file.

Never see another Google text ad… ever!

Perhaps text ads are less annoying than banners, and perhaps they’re more effective, but I still don’t want to see them. No, I don’t care if it’s Google, the daahhhling of the “in” geek crowd, serving them up—they’re still ads.

Even though I use Firefox, I was never able to get rid of these text ads. Via a built-in Firefox function, I could easily ignore domains of images (via the right-click menu), but text was a different animal. I thought I was stuck. I was wrong.

Google serves their text ads in an iFrame, which to the non-techies out there, is basically an area of a page in which another page is loaded. It may not be clearly distinguishable from the parent page, but it’s coming it’s an external page. Therefore, the key is to block iFrames coming from ad servers, and in this case, Google’s ad servers. Here’s how to do it:

  1. Download and install Mozilla Firefox. It’s a superior browser, and it should be your default browser. Internet Explorer (IE) just doesn’t cut it anymore.
  2. Install the Adblock extension.
  3. Restart Firefox to complete Adblock’s installation.
  4. Go to the Tools > Extensions menu, highlight Adblock, and click the Options button.
  5. In the New Filter: input box, paste this: http://**
  6. Ensure that in the Adblock preferences window, it is set to Remove ads, not Hide ads.
  7. Never see another Google ad!

UPDATE: This userContent.css technique by Neil Jenkins is probably even better. It will catch and block most ads (including Google text ads). The ones it doesn’t get can be defeated manually by Adblock.

BY THE WAY: Yes, I do run ads on my site, and if you block them, well, more power to ya.

Monday, May 12, 2008

Installing Dictionary in Openoffice

The Dictionary Installer for Microsoft Windows is no longer being actively maintained.

Recent versions of include a built in dictionary
installer called DictOOo which has been developed by Laurent Godard and which has many more features, and is
more compatible, than the latest version of DictInstall.

To access DictOOo, choose the File menu from within, then choose Wizards and click on Install new dictionaries....

OOo file menu

1) Dic00o will be opened in a new open office session

2) select the dictionary of choise by holding Ctrl and clinking

3) new menu will be opened and select your choice of dictionary

-Mihir Patel.

[TUT] [C] Bit manipulation in AVR

Programming 101 - By Eric Weddington

To really understand what's going, it's best to learn C languages bit operators and about truth tables.

    | bit OR

    & bit AND

    ~ bit NOT

    ^ bit EXLUSIVE OR (XOR)

    &lt;&lt; bit LEFT SHIFT

    &gt;&gt; bit RIGHT SHIFT

These operators work on bits and not logical values. Take two 8 bit
bytes, combine with any of these operators, and you will get another 8
bit byte according to the operator's function. These operators work on
the individual bits inside the byte.

A truth table helps to explain each operation. In a truth table, a 1 bit stands for true, and a 0 stands for false.

The OR operation truth table:

    0 OR 0 = 0

    0 OR 1 = 1

    1 OR 0 = 1

    1 OR 1 = 1

The AND operation truth table:

    0 AND 0 = 0

    0 AND 1 = 0

    1 AND 0 = 0

    1 AND 1 = 1

The XOR operation truth table:

    0 XOR 0 = 0

    0 XOR 1 = 1

    1 XOR 0 = 1

    1 XOR 1 = 0

The NOT operator inverts the sense of the bit, so a 1 becomes a 0, and a 0 becomes a 1.

So let's say I have a byte foo that is initialized to 0:


unsigned char foo = 0;

To set bit 0 in foo and then store the result back into foo:


foo = foo | 0x01;

The OR operation is used between the variable that we want to
change and a constant which is called a BIT MASK or simply the MASK.
The mask is used to identify the bit that we want changed.

Remember that we write the constants in hexadecimal because it's
shorter than writing it in binary. It is assumed that the reader knows
how to convert back and forth between hex and binary. Wink

Usually, though the statement is made shorter in real programming practice to take advantage of C's compound assignment:


foo |= 0x01;

This is equivalent to the statement above.

To clear bit 0 in foo requires 2 bit operators:


foo = foo & ~0x01;

This uses the AND operator and the NOT operator. Why do we use the NOT
operator? Most programmers find it easier to specify a mask wherein the
bit that they are interested in changing, is set. However, this kind of
mask can only be used in setting a bit (using the OR operator). To
clear a bit, the mask must be inverted and then ANDed with the variable
in question. It is up to the reader to do the math to show why this
works in clearing the desired bit.

Again, the statement is made shorter with a compound assignment:


foo &= ~0x01;

To see if a bit is set or clear just requires the AND operator, but
with no assignment. To see if bit 7 is set in the variable foo:


if(foo & 0x80)



The condition will be zero if the bit is clear, and the condition
will be non-zero if the bit is set. NOTE! The condition will be
NON-ZERO when the bit is set. But the condition will not NECESSARILY BE
ONE. It is left to the reader to calculate the value of the condition
to understand why this is the case.

There is another useful tool that is not often seen, and that is
when you want to flip a bit, but you don't know and you don't care what
state the bit is currently in. Then you would use the XOR operator:


foo = foo ^ 0x01;

Or the shorter statement:


foo ^= 0x01;

A lot of times the bit mask is built up dynamically in other
statements and stored in a variable to be used in the assignment


foo |= bar;

Sometimes, a programmer wants to specify the bit NUMBER that they
want to change and not the bit MASK. The bit number always starts at 0
and increases by 1 for each bit. An 8 bit byte has bit numbers 0-7
inclusive. The way to build a bit mask with only a bit number is to
LEFT SHIFT a bit by the bit number. To build a bit mask that has bit
number 2 set:


(0x01 &lt;&lt; 2)

To build a bit mask that has bit number 7 set:


(0x01 &lt;&lt; 7)

To build a bit mask that has bit number 0 set:


(0x01 &lt;&lt; 0)

Which ends up shifting the constant 0 bytes to the left, leaving it at 0x01.


Because there are a number of programmers who don't seem to have a
familiarity with bit flipping (because they weren't taught it at
school, or they don't need to know it because of working on PCs), most
programmers usually write macros for all of these operations. Also, it
provides a fast way of understanding what is happening when reading the
code, or it provides additional functionality.

Below is a set of macros that works with ANSI C to do bit operations:


#define bit_get(p,m) ((p) & (m))

#define bit_set(p,m) ((p) |= (m))

#define bit_clear(p,m) ((p) &= ~(m))

#define bit_flip(p,m) ((p) ^= (m))

#define bit_write(c,p,m) (c ? bit_set(p,m) : bit_clear(p,m))

#define BIT(x) (0x01 &lt;&lt; (x))

#define LONGBIT(x) ((unsigned long)0x00000001 &lt;&lt; (x))

To set a bit:


bit_set(foo, 0x01);

To set bit number 5:


bit_set(foo, BIT(5));

To clear bit number 6 with a bit mask:


bit_clear(foo, 0x40);

To flip bit number 0:


bit_flip(foo, BIT(0));

To check bit number 3:


if(bit_get(foo, BIT(3)))



To set or clear a bit based on bit number 4:


if(bit_get(foo, BIT(4)))


bit_set(bar, BIT(0));




bit_clear(bar, BIT(0));


To do it with a macro:


bit_write(bit_get(foo, BIT(4)), bar, BIT(0));

If you are using an unsigned long (32 bit) variable foo, and have
to change a bit, use the macro LONGBIT which creates un unsigned long
mask. Otherwise, using the BIT() macro, the compiler will truncate the
value to 16-bits.[/list]

Monday, May 5, 2008

Metalink ASM51 and Keil A51

Assembler has no intelligence as it is working on assembly code. but the hex file generated by both of the assemblers are different and i am not sure at this point why.

Please give your comments if you have worked on such a thing.

Saturday, May 3, 2008


Divx Movies 1
Blood Sport
Broken Arrow
True Lies
Three days of Condor
Divx Movies 2
Ice age
There is something about Mary
The shawshank Redemption
Notting Hill
Top Gun
Shrek 2
Divx Movies 3
Chariots of Fire
Taxi drivers
Apocalypse Now
Divx Movies 4
Lethal Weapon 1
Lethal Weapon 2
Lethal Weapon 3
Lethal Weapon 4
Divx Movies 5
Man on fire
Silence of the Lambs
The Bone Collector
Divx Movies 6
Raiders of the Lost Ark
Indiana Jones and the Temple of Doom
Indiana Jones and the last crusade
Full metal jacket
Divx Movies 7
Saving Private Ryan
The Bourne Identity
The Bourne Supremacy
The Ghost and the darkness
The Talented Mr.Ripley
The Usual suspects
Divx Movies 8 (Clint Eastwood Collection)
Dirty Harry
magnum Force
The Rookie
The Dead Pool

Divx Movies 9
Match Stick men
The Windtalkers
Men of Honor
Forrest Gump
Divx Movies 10
Dog Day afternoon
Training Day
Behind Enemy lines
Suspect Zero
American Beauty
Divx Movies 11
One Flew over the cockoos Nest
Enemy at the gates
Good Fellas
Divx Movies 12
Donnie Brasco
Scent of a Women
Road to Perdition
Divx Movies 13
cast Away
Good Will hunting
Schindlers List
Divx Movies 14
12 Angry men
The Hunt for red october
The Great escape
Divx Movies 15
Back to the Future 1
Back to the Future 2
Back to the Future 3
Bad Boys 1
Bad Boys 2
Div Movies 16
The Score
The Game
National treasure
Divx Movies 17
Mad Max 1
Broken Arrow
Divx Movies 18
Orson Welles- Touch of Evil
The Shining
The conversation
Monty Python and the Holy Grail
Butch cassidy and the Sundance kid

DVD Movies 1 - James Bond 1
For your Eyes only
DVD Movies 2
Guns of Navarone - with extra features
DVD Movies 3 - Godfather Trilogy
Godfather 1
Godfather 2
Godfather 3
Divx Movies 19
Road Trip
Face Off
The Transporter
The Rock
Divx Movies 20 - Bruce Willis Collection
Die Hard 1
Die Hard 2 - Die Harder
Die Hard 3 - Die Hard with a Vengence
Die Hard 4 - Live Free or Die Hard
16 Blocks
Divx Movies 21
Uncommon Valour
Arlington Road
The Peachmaker
Divx Movies 22
Man of the year
Children of Men
The Good German
The Da Vinci Code
No Man's Land (Oscar Winner for Best Foriegn Film 2001)
Divx Movies 23
The Bourne Ultimatum
The Sting
Midnight Cowboys
LA Confidential(Not working)
My Cousin Vinny
Divx Movies 24
National treasure
oceans 11
Oceans 12
Divx Movies 25
Enemy at the gates
Face Off
Lord of war
Pirates of the caribean 1
The Rock
The Transporter
Divx Movies 26
LA Confidential
The recruit
Operation Condor
American Gangster
3:10 to Yuma
Divx Movies 27
The Eagle has Landed(1976)
Anatomy of a Murder(1959)
Pirates of the caribean 2: Dead Man's Chest
Pirates of the caribean 3: At World's End
The Prestige
DVD Movies 28
The Jackal
The Day of the Jackal
The Saviour
Divx Movies 29
Hotshots 1
Hotshots 2
The Kingdom
The Maltese Falcon(1941)
I am Legend
Divx Movies 30
The gods must be crazy 1
The gods must be crazy 2
Leon- The Professional
Divx Movies 31
Beverlyhills Cop 1
Beverlyhills Cop 2
Beverlyhills Cop 3
Divx Movies - 32 Alfred Hitchcock 2
Strangers on the train
Dial M for Murder
The Birds
To catch a thief
North by Northwest
Divx Movies - 33
Witness for the Prosecution
Asterix and the Vikings
Dirty Harry 3 - The Enforcer
Dirty Harry 4 - Sudden Impact
Divx Movies - 34 Alfred Hitchcock 3
Murder 1930
Spellbound 1945
Notorious 1946
I confess 1953
Jamaica Inn 1939
Frenzy 1972
Divx Movies - 35
Murder at the Gallop (1963 - Agatha Christie)
Naked Gun From the Files of Police Squad (1988)
NakedGun 2.5 The Smell of Fear (1991)
NakedGun33.3 The Final Insult (1994)
The Pledge
Divx Movies - 36
Appointment With Death ( Agatha Christie)
Cape Fear (1962)
The Man Who Never Was (1956)
The Spy Who Came In from the Cold (1965)
Divx Movies - 37
Double Indemnity
PeepingTom (1960)
Terms Of Endearment (1983)
Topaz (1969)
When 8 Bells Toll (1971)
Divx Movies - 38
Kansas City Confidential (1952)
Murder By Decree (1979) (Shelock Holmes mystery)
Murder Most Foul (1964) (Agatha Christie)
Murder on the Orient Express (1974) (Agatha Christie)
Murder She Said (1961) (Agatha Christie)
Divx Movies - 39
Phone Booth
88 Minutes
Mr Beans Holiday
Lock, Stock and Two Smoking Barrels
Inside Man
Divx Movies - Alfred Hitchcock 1 - 40
Rear window
Shadow of a doubt
Man who knew too much
Family Plot
Divx Movies 41
Tinker Tailor Soldier Spy - 7 Episodes
Murder By Death (1976)
Divx Movies 42
Fourth Protocol(1987)
Billion Dollar Brain (1967)
California Suite (1978)
Funeral in Berlin
The Ipcress File (1965)
Divx Movies 43
Murder in the First (1995)
Play Misty For Me (1971)
Pulp Fiction
Sleuth (1972)
Divx Movies 44
Blood Diamond
Little miss sunshine
Absolute Power(1997)
In The Valley of Elah
Divx Movies 45
TheOsterman Weekend (1983)
The Italian Job (1969)
Stanley Kubrick - Dr. Strangelove (1964)
Dogs of War
The Boys From Brazil
Divx Movies 46
Fight Club
American History X
Marathon Man
Runaway Jury
The Number 23
Divx Movies 47
1.The Hound of the Baskervilles (1939)
2.The Adventures of Sherlock Holmes (1939)
3.Sherlock Holmes and the Voice of Terror (1942)
4.Sherlock Holmes and the Secret Weapon (1943)
5.Sherlock Holmes in Washington (1943)
6.Sherlock Holmes Faces Death (1943)
Divx Movies 48
7.The Spider Woman (1944)
8.The Scarlet Claw (1944)
9.The Pearl of Death (1944)
10.The House of Fear (1945)
11.The Woman in Green (1945)
12.Pursuit to Algiers (1945)
Divx Movies 49
13. Terror by Night (1946)
14. Dressed to Kill (1946)
Hercule Poirot - Evil Under the Sun (1982)
Miss Marple - Murder Ahoy (1964)
Clue (1985)
Divx Movies 50
The Odessa File
The Verdict
A Few Good Men
The Fugitive