Perl Intro for Bioinformatics

whooploafSoftware and s/w Development

Dec 13, 2013 (3 years and 7 months ago)

71 views

1
P
e
r
l
I
n
t
r
o
f
o
r
B
i
o
i
n
f
o
r
m
a
t
i
c
s
E
r
i
c
M
u
l
v
a
n
e
y
U
n
i
v
e
r
s
i
t
y
of
W
i
n
d
s
o
r
2
W
h
y
P
e
r
l
?

P
e
r
l
i
s
a
v
e
r
y
,
v
e
r
y
c
o
n
c
i
s
e
l
a
n
g
u
a
g
e
.

P
e
r
l
c
o
m
e
s
w
i
t
h
e
x
t
e
n
s
i
v
e
d
o
c
u
m
e
n
t
a
t
i
o
n
.

S
e
e
t
h
e
p
e
r
l
a
n
d
p
e
r
l
d
o
c
m
a
n
p
a
g
e
s
f
o
r
m
o
r
e
.

T
h
e
P
e
r
l
c
o
m
p
i
l
e
r
a
n
d
r
u
n
t
i
m
e
s
y
s
t
e
m
c
a
n
p
r
o
v
i
d
e
a
n
a
m
a
z
i
n
g
a
m
o
u
n
t
o
f
h
e
l
p
t
o
t
h
e
u
s
e
r
.

I
n
p
a
r
t
i
c
u
l
a
r
,
s
e
e
p
e
r
l
d
o
c
d
i
a
g
n
o
s
t
i
c
s
.

P
e
r
l
i
s
f
r
e
e
,
t
r
i
e
d
a
n
d
t
r
u
e
,
a
n
d
a
v
a
i
l
a
b
l
e
f
o
r
a
l
l
m
a
j
o
r
o
p
e
r
a
t
i
n
g
s
y
s
t
e
m
s
.

B
i
o
p
e
r
l
(
h
t
t
p
:
/
/
w
w
w
.
b
i
o
p
e
r
l
.
o
r
g
/
)
3
B
a
s
i
c
D
a
t
a
t
y
p
e
s

P
e
r
l
h
a
s
t
h
r
e
e
m
a
i
n
d
a
t
a
t
y
p
e
s
:

S
c
a
l
a
r
s

S
c
a
l
a
r
s
h
o
l
d
s
i
n
g
l
e
v
a
l
u
e
s
,
l
i
k
e
i
n
t
e
g
e
r
s
,
f
l
o
a
t
i
n
g
-
p
o
i
n
t
o
r
r
e
a
l
v
a
l
u
e
s
,
a
n
d
s
t
r
i
n
g
s
.

A
r
r
a
y
s

A
r
r
a
y
s
h
o
l
d
a
n
y
n
u
m
b
e
r
o
f
s
c
a
l
a
r
s
.

H
a
s
h
e
s

H
a
s
h
e
s
a
s
s
o
c
i
a
t
e
k
e
y
s
w
i
t
h
v
a
l
u
e
s
.
B
o
t
h
k
e
y
s
a
n
d
v
a
l
u
e
s
a
r
e
s
c
a
l
a
r
.
4
S
c
a
l
a
r
V
a
r
i
a
b
l
e
s

A
l
l
s
c
a
l
a
r
v
a
r
i
a
b
l
e
s
b
e
g
i
n
w
i
t
h
d
o
l
l
a
r
-
s
i
g
n
s
.
m
y
$
n
a
m
e
=
"
T
i
m
"
;
m
y
(
$
d
x
,
$
d
y
)
=
(
1
0
,
2
0
)
;
m
y
$
d
i
s
t
=
s
q
r
t
(
$
d
x
*
*
2
+
$
d
y
*
*
2
)
;

P
e
r
l
n
e
e
d
s
t
o
b
e
t
o
l
d
t
o
c
h
e
c
k
f
o
r
d
e
c
l
a
r
a
t
i
o
n
s
.
p
r
i
n
t
$x
+
2;
#
A
s
s
u
m
e
s
$x
=
0,
a
n
d
p
r
i
n
t
s
2
u
s
e
s
t
r
i
c
t
;
p
r
i
n
t
$x
+
2;
#
E
r
r
o
r
,
$x
u
n
d
e
c
l
a
r
e
d
!
5
D
y
n
a
m
i
c
T
y
p
i
n
g

S
c
a
l
a
r
s
c
a
n
b
e
i
n
t
e
g
e
r
s
,
f
l
o
a
t
s
,
o
r
s
t
r
i
n
g
s
.
m
y
$
i
d
=
1
2
3
_
4
5
6
_
7
8
9
;
p
r
i
n
t
"
I
D
=
"
,
$
i
d
;
#
p
r
i
n
t
s
I
D
=
1
2
3
4
5
6
7
8
9
$
i
d
=
"
1
2
3
4
5
6
7
8
9
"
;
p
r
i
n
t
"
I
D
=
"
,
$
i
d
;
#
p
r
i
n
t
s
I
D
=
1
2
3
456
789

P
e
r
l
w
i
l
l
a
u
t
o
m
a
t
i
c
a
l
l
y
c
o
n
v
e
r
t
,
b
u
t
b
e
c
a
r
e
f
u
l
.
$
n
e
x
t
_
i
d
=
$
i
d
+
1;
p
r
i
n
t
"
I
D
=
"
,
$
n
e
x
t
_
i
d
;
#
p
r
i
n
t
s
I
D
=
1
2
4
6
S
t
r
i
n
g
s

D
o
u
b
l
e
q
u
o
t
e
s
i
n
t
e
r
p
o
l
a
t
e
v
a
l
u
e
s
.
m
y
$
n
a
m
e
=
"
T
i
m
"
;
p
r
i
n
t
"
H
e
l
l
o
,
$
n
a
m
e
!
"
;
#
p
r
i
n
t
s
H
e
l
l
o
,
T
i
m
!
p
r
i
n
t
'
H
e
l
l
o
,
$
n
a
m
e
!
'
;
#
p
r
i
n
t
s
H
e
l
l
o
,
$
n
a
m
e
!

Y
o
u
c
o
n
c
a
t
e
n
a
t
e
s
t
r
i
n
g
s
w
i
t
h
'
.
'
n
o
t
'
+
'
.
p
r
i
n
t
'
H
e
l
l
o
,
'
.
$
n
a
m
e
.
'
!
'
;
#
p
r
i
n
t
s
H
e
l
l
o
,
T
i
m
!
p
r
i
n
t
'
4
'
.
'
2
'
;
#
p
r
i
n
t
s
42
p
r
i
n
t
'
4
'
+
'
2
'
;
#
p
r
i
n
t
s
6
p
r
i
n
t
2
+
2
.
2
#
p
r
i
n
t
s
42
7
M
o
r
e
S
t
r
i
n
g
s

Y
o
u
c
a
n
e
x
t
r
a
c
t
s
u
b
s
t
r
i
n
g
s
f
r
o
m
s
t
r
i
n
g
s
.
m
y
$
m
s
g
=
"
I
a
m
a

s
h
!
"
;
p
r
i
n
t
s
u
b
s
t
r
(
$
m
s
g
,
7
,
4
)
;
#
p
r
i
n
t
s

s
h

O
r
r
e
p
l
a
c
e
t
h
e
m
w
i
t
h
n
e
w
s
u
b
s
t
r
i
n
g
s
.
s
u
b
s
t
r
(
$
m
s
g
,
7
,
4)
=
"
h
o
l
o
g
r
a
m
"
;
p
r
i
n
t
$
m
s
g
;
#
p
r
i
n
t
s
I
a
m
a
h
o
l
o
g
r
a
m
!

B
u
t
y
o
u
c
a
n
'
t
s
u
b
s
c
r
i
p
t
s
t
r
i
n
g
s
l
i
k
e
a
r
r
a
y
s
.
p
r
i
n
t
$
w
o
r
d
[
0
]
;
#
E
r
r
o
r
:
d
o
e
s
n
'
t
m
e
a
n
w
h
a
t
y
o
u
#
t
h
i
n
k
i
t
m
e
a
n
s
.
8
O
t
h
e
r
S
t
r
i
n
g
O
p
e
r
a
t
o
r
s

Y
o
u
c
a
n
d
u
p
l
i
c
a
t
e
s
t
r
i
n
g
s
w
i
t
h
'
x
'
.
p
r
i
n
t
"
F
i
s
h
"
x
3;
#
p
r
i
n
t
s
F
i
s
h
F
i
s
h
F
i
s
h

L
i
k
e
n
u
m
b
e
r
s
,
s
t
r
i
n
g
s
c
a
n
a
l
s
o
b
e
c
o
m
p
a
r
e
d
.
#
N
u
m
b
e
r
s
<
<=
==
!
=
>=
>
<=>
#
S
t
r
i
n
g
s
l
t
l
e
e
q
n
e
g
e
g
t
c
m
p

R
e
m
e
m
b
e
r
,
P
e
r
l
d
o
e
s
a
u
t
o
m
a
t
i
c
c
o
n
v
e
r
s
i
o
n
s
.
p
r
i
n
t
'
4
2
'
<
'
6
'
?
'
t
r
u
e
'
:
'
f
a
l
s
e
'
;
#
p
r
i
n
t
s
f
a
l
s
e
p
r
i
n
t
42
l
t
6
?
'
t
r
u
e
'
:
'
f
a
l
s
e
'
;
#
p
r
i
n
t
s
t
r
u
e
9
A
r
r
a
y
s

A
r
r
a
y
s
a
r
e
l
i
k
e
s
t
r
i
n
g
s
o
f
s
c
a
l
a
r
v
a
l
u
e
s
.
m
y
@
s
t
u
f
f
=
(
3
.
1
4
,
42,
"
h
a
n
d
s
o
f
b
l
u
e
"
)
;
m
y
(
$
p
i
,
$
a
n
s
,
$
s
c
a
r
y
)
=
@
s
t
u
f
f
;

I
n
d
e
x
i
n
g
r
e
t
u
r
n
s
a
s
c
a
l
a
r
,
h
e
n
c
e
t
h
e
'
$
'
.
p
r
i
n
t
"
T
w
o
b
y
t
w
o
,
$
s
t
u
f
f
[
2
]
!
"
;

Y
o
u
c
a
n
a
l
s
o
e
x
t
r
a
c
t
s
l
i
c
e
s
,
r
e
p
l
a
c
e
s
l
i
c
e
s
,
b
u
t
y
o
u
c
a
n
n
o
t
n
e
s
t
a
r
r
a
y
s
w
i
t
h
i
n
o
t
h
e
r
a
r
r
a
y
s
.
m
y
@
s
l
i
c
e
=
@
s
t
u
f
f
[
0
.
.
1
]
;
#
(
3
.
1
4
,
42)
@
s
l
i
c
e
[
1
.
.
1
]
=
(
2
,
3
)
;
#
(
3
.
1
4
,
2,
3)
m
y
@
m
o
r
e
=
(
@
s
l
i
c
e
,
5,
7
)
;
#
(
3
.
1
4
,
2,
3,
5,
7)
10
A
r
r
a
y
s
a
n
d
S
t
r
i
n
g
s

S
t
r
i
n
g
s
c
a
n
b
e
s
p
l
i
t
,
a
r
r
a
y
s
c
a
n
b
e
j
o
i
n
e
d
.
m
y
@
g
i
r
l
s
=
s
p
l
i
t
(
"
"
,
"
Z
o
e
I
n
a
r
a
K
a
y
l
e
e
R
i
v
e
r
"
)
;
p
r
i
n
t
j
o
i
n
(
"
,
"
,
@
g
i
r
l
s
)
;
#
p
r
i
n
t
s
Z
o
e
,
I
n
a
r
a
,
K
a
y
l
e
e
,
.
.
.
p
r
i
n
t
j
o
i
n
(
"
,
"
,
s
o
r
t
@
g
i
r
l
s
)
;
#
p
r
i
n
t
s
I
n
a
r
a
,
K
a
y
l
e
e
,
.
.
.

A
r
r
a
y
l
e
n
g
t
h
a
n
d
s
t
r
i
n
g
l
e
n
g
t
h
a
r
e
d
i
f
f
e
r
e
n
t
.
p
r
i
n
t
l
e
n
g
t
h
(
$
g
i
r
l
s
[
1
]
)
;
#
p
r
i
n
t
s
6
m
y
$
l
e
n
=
@
g
i
r
l
s
;
p
r
i
n
t
$
l
e
n
;
#
p
r
i
n
t
s
4
p
r
i
n
t
@
g
i
r
l
s
;
#
p
r
i
n
t
s
I
n
a
r
a
K
a
y
l
e
e
R
i
v
e
r
Z
o
e
p
r
i
n
t
s
c
a
l
a
r
@
g
i
r
l
s
;
#
p
r
i
n
t
s
4
1
1
H
a
s
h
e
s

H
a
s
h
e
s
a
r
e
l
i
k
e
D
i
c
t
i
o
n
a
r
i
e
s
i
n
J
a
v
a
.
m
y
%
a
g
e
s
=
(
'
T
i
m
'
=>
42,
'
R
i
v
e
r
'
=>
1
7
,
'
S
u
m
m
e
r
'
=>
2
1
)
;
p
r
i
n
t
$
a
g
e
s
{
'
R
i
v
e
r
'
}
;
#
p
r
i
n
t
s
1
7

K
e
y
s
m
a
y
n
o
t
b
e
k
e
p
t
i
n
t
h
e
o
r
d
e
r
s
u
p
p
l
i
e
d
.
p
r
i
n
t
j
o
i
n
(
"
,
"
,
k
e
y
s
%
a
g
e
s
)
;
#
p
r
i
n
t
s
R
i
v
e
r
,
T
i
m
,
.
.
.
p
r
i
n
t
j
o
i
n
(
"
,
"
,
v
a
l
u
e
s
%
a
g
e
s
)
;
#
p
r
i
n
t
s
1
7
,
42,
2
1

K
e
y
s
c
a
n
b
e
u
n
q
u
o
t
e
d
i
f
t
h
e
y
'
r
e
b
a
r
e
w
o
r
d
s
.
d
e
l
e
t
e
$
a
g
e
s
{
T
i
m
}
;
p
r
i
n
t
e
x
i
s
t
s
$
a
g
e
s
{
T
i
m
}
?
'
t
r
u
e
'
:
'
f
a
l
s
e
'
;
#
p
r
i
n
t
s
f
a
l
s
e
12
A
d
v
a
n
c
e
d
D
a
t
a
t
y
p
e
s

I
n
P
e
r
l
,
a
r
r
a
y
s
a
n
d
h
a
s
h
e
s
c
a
n
o
n
l
y
h
o
l
d
s
c
a
l
a
r
s
,
b
u
t
t
h
e
r
e
i
s
a
n
o
t
h
e
r
k
i
n
d
o
f
s
c
a
l
a
r
:
r
e
f
e
r
e
n
c
e
s
.

R
e
f
e
r
e
n
c
e
s
a
r
e
l
i
k
e
p
o
i
n
t
e
r
s
.
m
y
@
a
r
r
a
y
=
(
1
,
2,
3,
4
)
;
m
y
$
a
r
e
f
=
\
@
a
r
r
a
y
;

D
e
r
e
f
e
r
e
n
c
i
n
g
c
a
n
g
e
t
m
e
s
s
y
.
p
r
i
n
t
@
{
$
a
r
e
f
}
;
#
p
r
i
n
t
s
1
2
3
4
p
r
i
n
t
$
{
$
a
r
e
f
}
[
0
]
;
#
p
r
i
n
t
s
1
p
r
i
n
t
$
$
a
r
e
f
[
1
]
;
#
p
r
i
n
t
s
2
p
r
i
n
t
$
a
r
e
f
-
>
[
2
]
;
#
p
r
i
n
t
s
3
13
M
o
r
e
R
e
f
e
r
e
n
c
e
s

T
h
e
r
e
a
r
e
e
a
s
i
e
r
w
a
y
s
t
o
c
r
e
a
t
e
r
e
f
e
r
e
n
c
e
s
.
m
y
$
h
r
e
f
=
{
N
u
m
b
e
r
s
=>
[
1
,
2,
3,
4
]
};
p
r
i
n
t
@
{
$
h
r
e
f
-
>
{
N
u
m
b
e
r
s
}
}
;
p
r
i
n
t
s
1
2
3
4
#
W
i
t
h
o
u
t
t
h
e
@
{
}
,
P
e
r
l
w
i
l
l
o
n
l
y
p
r
i
n
t
t
h
e
p
o
i
n
t
e
r
v
a
l
u
e
.
p
r
i
n
t
$
h
r
e
f
-
>
{
N
u
m
b
e
r
s
}
-
>
[
0
]
;
p
r
i
n
t
s
1;
p
r
i
n
t
$
h
r
e
f
-
>
{
N
u
m
b
e
r
s
}
[
1
]
;
p
r
i
n
t
s
2;
#
O
n
l
y
t
h
e
f
i
r
s
t
-
>
i
s
m
a
n
d
a
t
o
r
y
;
w
i
t
h
o
u
t
i
t
,
P
e
r
l
w
o
u
l
d
a
s
s
u
m
e
y
o
u
w
e
r
e
l
o
o
k
i
n
g
u
p
'
N
u
m
b
e
r
s
'
i
n
%
h
r
e
f
.

Y
o
u
c
a
n
e
v
e
n
m
a
k
e
r
e
f
e
r
e
n
c
e
s
t
o
l
i
t
e
r
a
l
s
.
m
y
$
t
e
n
=
\
1
0
;
$
$
t
e
n
=
1
2
;
#
E
r
r
o
r
:
r
e
a
d
-
o
n
l
y
v
a
l
u
e
.
14
D
a
t
a
S
t
r
u
c
t
u
r
e
s

R
e
f
s
e
n
a
b
l
e
u
s
t
o
c
r
e
a
t
e
c
o
m
p
l
e
x
d
a
t
a
s
t
r
u
c
t
u
r
e
s
.
m
y
%
p
e
o
p
l
e
=
(
R
i
v
e
r
=>
{
a
g
e
=>
1
7
,
s
i
b
l
i
n
g
s
=>
[
'
S
i
m
o
n
'
]
},
S
u
m
m
e
r
=>
{
a
g
e
=
>
2
1
,
g
e
n
d
e
r
=>
'
f
e
m
a
l
e
'
}
)
;
p
r
i
n
t
$
p
e
o
p
l
e
{
R
i
v
e
r
}
{
a
g
e
}
;
#
p
r
i
n
t
s
1
7
#
P
e
r
l
f
i
g
u
r
e
s
o
u
t
t
h
a
t
$
p
e
o
p
l
e
{
R
i
v
e
r
}
i
s
a
r
e
f
e
r
e
n
c
e
.
p
r
i
n
t
@
{
$
p
e
o
p
l
e
{
R
i
v
e
r
}
{
s
i
b
l
i
n
g
s
}
}
;
#
p
r
i
n
t
s
S
i
m
o
n
#
S
i
n
c
e
w
e
w
a
n
t
t
h
e
w
h
o
l
e
a
r
r
a
y
,
w
e
h
a
v
e
t
o
u
s
e
@
{
}

A
g
o
o
d
t
u
t
o
r
i
a
l
o
n
P
e
r
l
r
e
f
e
r
e
n
c
e
s
c
a
n
b
e
f
o
u
n
d
i
n
t
h
e
p
e
r
l
r
e
f
m
a
n
p
a
g
e
.
15
C
o
n
d
i
t
i
o
n
a
l
s

P
e
r
l
h
a
s
t
h
e
t
r
a
d
i
t
i
o
n
a
l
i
f
-
s
t
a
t
e
m
e
n
t
,
b
u
t
i
t
a
l
s
o
h
a
s
'
u
n
l
e
s
s
'
;
n
o
t
e
,
t
h
e
b
r
a
c
e
s
a
r
e
n
o
t
o
p
t
i
o
n
a
l
.
m
y
$x
=
$
v
a
l
u
e
<=>
42;
i
f
(
$x
<
0
)
{
p
r
i
n
t
"
T
o
o
s
m
a
l
l
!
"
;
}
e
l
s
i
f
(
$x
>
0
)
{
p
r
i
n
t
"
T
o
o
l
a
r
g
e
!
"
;
}
e
l
s
e
{
p
r
i
n
t
"
J
u
s
t
r
i
g
h
t
!
"
;
}
u
n
l
e
s
s
(
@
w
o
r
k
)
{
p
r
i
n
t
"
D
o
n
e
.
"
;
}

Y
o
u
c
a
n
e
v
e
n
s
u
f
f
i
x
t
h
e
m
f
o
r
s
i
n
g
l
e
s
t
a
t
e
m
e
n
t
s

n
o
b
r
a
c
e
s
,
a
n
d
t
h
e
p
a
r
e
n
t
h
e
s
e
s
a
r
e
o
p
t
i
o
n
a
l
.
d
i
e
(
"
C
a
n
'
t
o
p
e
n
$fi
l
e
!
"
)
u
n
l
e
s
s
o
p
e
n
(
I
N
,
"
<
$

l
e
"
)
;
16
L
o
o
p
s

I
t
a
l
s
o
h
a
s
f
o
r
-
,
w
h
i
l
e
-
,
a
n
d
a
l
s
o
f
o
r
e
a
c
h
-
l
o
o
p
s
.
f
o
r
(
m
y
$i
=
0;
$i
<
@
i
t
e
m
s
;
+
+
$
i
)
{
p
r
i
n
t
$
i
t
e
m
s
[
$
i
]
;
}
f
o
r
e
a
c
h
m
y
$
i
t
e
m
(
@
i
t
e
m
s
)
{
p
r
i
n
t
$
i
t
e
m
;
}
w
h
i
l
e
(
n
o
t
$
d
o
n
e
)
{
.
.
.
d
o
s
o
m
e
t
h
i
n
g
.
.
.
}
d
o
{
.
.
.
s
o
m
e
t
h
i
n
g
.
.
.
}
u
n
t
i
l
(
$
d
o
n
e
)
;

L
i
k
e
i
f
/
u
n
l
e
s
s
,
y
o
u
c
a
n
s
u
f
f
i
x
e
a
c
h
e
x
c
e
p
t
f
o
r
(
;
;
)
.
p
r
i
n
t
"
I
a
m
a

s
h
!
"
w
h
i
l
e
1;
#
I
n

n
i
t
e
l
o
o
p
.
p
r
i
n
t
$_
f
o
r
e
a
c
h
@
i
t
e
m
s
;
#
C
a
n
'
t
n
a
m
e
t
h
e
i
t
e
r
a
t
o
r
.

P
e
r
l
u
s
e
s
n
e
x
t
/
l
a
s
t
l
i
k
e
C
/
J
a
v
a
'
s
c
o
n
t
i
n
u
e
/
b
r
e
a
k
.
f
o
r
e
a
c
h
m
y
$x
(
@
a
)
{
n
e
x
t
i
f
$
x
<
1;
.
.
.
}
17
F
i
l
e
I
/
O

A
r
g
u
m
e
n
t
s
t
o
'
o
p
e
n
'
r
e
s
e
m
b
l
e
U
n
i
x
s
h
r
e
d
i
r
e
c
t
s
.
o
p
e
n
I
N
,
"
<
$fi
l
e
"
;
#
I
N
i
s
t
h
e

l
e
h
a
n
d
l
e
.
o
p
e
n
O
U
T
,
"
>
>
$
l
o
g
"
;
#
A
p
p
e
n
d
t
o
$
l
o
g
.
o
p
e
n
D
A
T
,
"
+
<
$
d
b
"
;
#
O
p
e
n
f
o
r
r
e
a
d
i
n
g
/
w
r
i
t
i
n
g
.
o
p
e
n
L
S
,
"
l
s
-
l
|
"
;
#
W
e
r
e
a
d
t
h
e
o
u
t
p
u
t
o
f
'
l
s
-
l
'
.

R
e
a
d
i
n
g
a
n
d
w
r
i
t
i
n
g
f
r
o
m
s
t
r
e
a
m
s
i
s
e
a
s
y
.
m
y
$
l
i
n
e
=
<
I
N
>
;
p
r
i
n
t
O
U
T
"
m
e
:
I
j
u
s
t
r
e
a
d
$
l
i
n
e
\
n
"
;
#
N
o
c
o
m
m
a
.

L
i
n
e
s
r
e
a
d
m
a
y
c
o
n
t
a
i
n
l
i
n
e
-
e
n
d
s
.
c
h
o
m
p
$
l
i
n
e
;
18
R
e
g
u
l
a
r
E
x
p
r
e
s
s
i
o
n
s

Y
o
u
c
a
n
u
s
e
R
.
E
.
t
o
c
h
e
c
k
t
h
e
f
o
r
m
a
t
o
f
s
t
r
i
n
g
s
.
p
r
i
n
t
'
k
e
y
w
o
r
d
'
i
f
$
t
o
k
e
n
=~
m
/
^
(
i
f
|
t
h
e
n
|
e
l
s
e
)
$
/
;

B
u
t
i
t
i
s
m
o
r
e
i
n
t
e
r
e
s
t
i
n
g
t
o
e
x
t
r
a
c
t
d
a
t
a
.
m
y
@
n
u
m
b
e
r
s
=
(
$
l
i
n
e
=~
m
/
\
d
+
/
g
)
;
w
h
i
l
e
(
m
y
$
l
i
n
e
=
<
I
N
>
)
{
n
e
x
t
i
f
$
l
i
n
e
!
~
m
/
(
[
-
.
\
w
]
+
)
@
(
[
-
.
\
w
]
+
)
/
;
p
r
i
n
t
"
e
m
a
i
l
:
$
1
\
@
$
2
\
n
"
;
}
m
y
(
$
d
i
r
,
$fi
l
e
)
=
$
p
a
t
h
=~
m
{
(
.
+
/
)
?
(
[
^
/
]
+
)
}
;
19
S
u
b
s
t
i
t
u
t
i
o
n
s

Y
o
u
c
a
n
a
l
s
o
u
s
e
R
.
E
.
f
o
r
s
e
a
r
c
h
-
a
n
d
-
r
e
p
l
a
c
e
.
m
y
$
m
s
g
=
"
S
h
e
'
s
w
e
a
r
i
n
g
g
r
e
e
n
.
"
;
$
m
s
g
=~
s
/
g
r
e
e
n
/
g
o
l
d
/
;
p
r
i
n
t
$
m
s
g
;
#
p
r
i
n
t
s
S
h
e
'
s
w
e
a
r
i
n
g
g
o
l
d
.
m
y
$
c
o
d
e
=
"
i
f
t
e
s
t
t
h
e
n
h
i
c
c
u
p
e
l
s
e
w
i
n
k
"
;
$
m
s
g
=~
s
/
(
i
f
|
t
h
e
n
|
e
l
s
e
)
/
\
U
\
1
/
g
;
p
r
i
n
t
$
c
o
d
e
;
#
p
r
i
n
t
s
I
F
t
e
s
t
T
H
E
N
h
i
c
c
u
p
E
L
S
E
w
i
n
k

T
h
e
r
e
'
s
a
l
s
o
a
s
i
m
i
l
a
r
u
t
i
l
i
t
y
f
o
r
c
h
a
r
a
c
t
e
r
s
.
m
y
$
s
e
c
r
e
t
=
"
D
o
n
'
t
t
e
l
l
a
n
y
o
n
e
!
"
;
$
s
e
c
r
e
t
=~
t
r
/
a
-
z
/
k
-
z
a
-
j
/
;
#
S
i
m
p
l
e
e
n
c
r
y
p
t
i
o
n
.
p
r
i
n
t
$
s
e
c
r
e
t
;
#
p
r
i
n
t
s
D
y
x
'
d
d
o
v
v
k
x
i
y
x
o
!
20
S
u
b
r
o
u
t
i
n
e
s

A
r
g
u
m
e
n
t
s
a
r
e
n
o
t
f
o
r
m
a
l
,
P
e
r
l
p
u
t
s
t
h
e
m
i
n
@
_
.
s
u
b
h
y
p
o
t
e
n
u
s
e
{
m
y
(
$
a
,
$
b
)
=
@
_
;
r
e
t
u
r
n
s
q
r
t
(
$
a
*
*
2
+
$
b
*
*
2
)
;
}
s
u
b
s
u
m
{
m
y
$
a
c
c
;
$
a
c
c
+=
$_
f
o
r
e
a
c
h
@
_
;
r
e
t
u
r
n
$
a
c
c
;
}
p
r
i
n
t
s
u
m
(
1
,
2,
3,
4
)
;
#
p
r
i
n
t
s
1
0
21
R
e
a
d
i
n
g
F
A
S
T
A
f
i
l
e
s
o
p
e
n
I
N
,
"
<
$fi
l
e
"
o
r
d
i
e
"
C
a
n
'
t
o
p
e
n
$fi
l
e
:
$
!
"
;
m
y
$
l
i
n
e
=
<
I
N
>
;
#
R
e
a
d
t
h
e
d
e
s
c
r
i
p
t
o
r
(
i
g
n
o
r
e
d
)
.
m
y
$
s
e
q
;
w
h
i
l
e
(
$
l
i
n
e
=
<
I
N
>
)
{
l
a
s
t
i
f
$
l
i
n
e
=~
/
^
>
/
;
#
S
t
o
p
i
f
d
e
s
c
r
i
p
t
o
r
.
$
l
i
n
e
=
l
c
$
l
i
n
e
;
$
l
i
n
e
=
~
s
/
[
^
a
-
z
]
/
/
s
g
;
$
s
e
q
=
$
s
e
q
.
$
l
i
n
e
;
}
r
e
t
u
r
n
$
s
e
q
;
22
T
r
a
n
s
l
a
t
e
D
N
A
i
n
t
o
R
N
A
s
u
b
d
n
a
_
t
o
_
r
n
a
{
m
y
(
$
d
n
a
)
=
@
_
;
$
d
n
a
=
l
c
$
d
n
a
;
$
d
n
a
=
~
s
/
[
^
a
c
g
t
]
/
/
s
g
;
m
y
$
r
n
a
=
(
r
e
v
e
r
s
e
$
d
n
a
)
=~
t
r
/
a
c
g
t
/
u
g
c
a
/
;
r
e
t
u
r
n
$
r
n
a
;
}
23
T
r
a
n
s
l
a
t
e
R
N
A
i
n
t
o
P
r
o
t
e
i
n
m
y
%
c
o
d
o
n
M
a
p
;
#
(
'
g
c
u
'
=
>
'
A
l
a
'
,
'
c
g
u
'
=>
'
A
r
g
'
,
.
.
.
)
s
u
b
r
n
a
_
t
o
_
p
r
o
t
e
i
n
{
m
y
(
$
r
n
a
)
=
@
_
;
m
y
$
p
r
o
t
e
i
n
;
w
h
i
l
e
(
$
r
n
a
=~
/
(
.
.
.
)
/
g
)
{
$
p
r
o
t
e
i
n
.
=
$
c
o
d
o
n
M
a
p
{
$
1
}
;
}
r
e
t
u
r
n
$
p
r
o
t
e
i
n
;
}
24
I
n
i
t
i
a
l
i
z
i
n
g
%
c
o
d
o
n
M
a
p
m
y
%
c
o
d
o
n
M
a
p
;
w
h
i
l
e
(
m
y
$
l
i
n
e
=
<
D
A
T
A
>
)
{
c
h
o
m
p
$
l
i
n
e
;
m
y
@
c
o
d
o
n
s
=
s
p
l
i
t
$
l
i
n
e
;
m
y
$
r
e
s
i
d
u
e
=
s
h
i
f
t
@
c
o
d
o
n
s
;
f
o
r
e
a
c
h
m
y
$c
(
@
c
o
d
o
n
s
)
{
$
c
o
d
o
n
M
a
p
{
l
c
$
c
}
=
$
r
e
s
i
d
u
e
;
}
}
25
O
t
h
e
r
P
o
i
n
t
s
of
I
n
t
e
r
e
s
t

M
o
d
u
l
e
s

B
u
i
l
d
l
i
b
r
a
r
i
e
s
of
r
e
l
a
t
e
d
s
u
b
r
o
u
t
i
n
e
s
w
h
i
c
h
c
a
n
be
i
n
c
l
u
d
e
d
w
i
t
h
t
h
e
u
s
e
s
t
a
t
e
m
e
n
t
.

F
o
r
a
n
i
n
t
r
o
d
u
c
t
i
o
n
s
e
e
m
a
n
p
e
r
l
m
o
d
.

O
b
j
e
c
t
O
r
i
e
n
t
e
d
P
r
o
g
r
a
m
m
i
n
g

P
e
r
l
s
u
p
p
o
r
t
s
O
O
P
a
f
t
e
r
a
f
a
s
h
i
o
n
.
R
o
b
u
s
t
,
s
i
m
p
l
e
,
a
n
d
a
b
i
t
o
f
f
-
p
u
t
t
i
n
g
a
t
f
i
r
s
t
,
but
y
o
u
'
l
l
l
e
a
r
n
t
o
l
i
k
e
i
t
.

F
o
r
a
n
i
n
t
r
o
d
u
c
t
i
o
n
s
e
e
m
a
n
p
e
r
l
t
o
o
t
;
i
f
y
o
u
'
r
e
u
n
f
a
m
i
l
i
a
r
w
i
t
h
O
O
P
,
s
t
a
r
t
w
i
t
h
m
a
n
p
e
r
l
b
o
o
t
.

P
e
r
l
f
o
r
B
i
o
i
n
f
o
r
m
a
t
i
c
s

B
i
o
P
e
r
l

h
t
t
p
:
/
/
w
w
w
.
b
i
o
p
e
r
l
.
o
r
g
/