다시 문을 열다. ubuntu




안녕하세요, 저는 길당 이라 합니다.

한 곳에서 블로그를 진행하다가
이곳 이글루스를 너무 방치하다시피 해서
마음이 그랬습니다.

오늘은 새로 연다 생각하고
이곳에도 다시 글을 작성할 생각입니다.

감사합니다 ^-^

ubuntu c# gildang how to - 30 ubuntu





.......................................................................................................................



안녕하세요, 저는 길당(홍길한)이라 합니다.

이어서 내용을 올립니다.

콘솔의 입출력

콘솔의 대표적인 기기로는 화면과 키보드가 있습니다. 프로그램을 작성하다 보면 사용자
(키보드)로부터 데이터를 입력 받아 원하는 계산을 하고 화면에 출력하게 되는
필연적인 과정을 거칩니다.

그럼 키보드의 입력은 어떻게 하며 처리된 결과는 어떠한 형식으로 화면에 출력하는지에
대해서 알아보기로 합니다.

키보드 입력

사용자의 키보드로부터 데이터를 읽어 들이기 위하여 함수 Read()와 ReadLine() 을 사용합니다.
ReadLine()의 경우 줄 단위로 문자열을 읽어 들이고, Read()의 경우는 한 개의 문자를
읽어들입니다. 그러면 문자, 문자열 상수, 실수를 입력받았을 경우를 보기로 합니다.

gildang@gildang:~/charp$ vim keyboard.cs
gildang@gildang:~/charp$ gmcs keyboard.cs
gildang@gildang:~/charp$ mono keyboard.exe
문자를 입력하시오. : K입력된 문자 : K
gildang@gildang:~/charp$
gildang@gildang:~/charp$ cat keyboard.cs
using System;

class Class1
{
    static void Main(String[] args)
    {
        int i;
        char ch;
        Console.Write("문자를 입력하시오. : ");
        i = Console.Read();
        ch = (char)i;
        Console.WriteLine("입력된 문자 : " + ch);
    }
}


gildang@gildang:~/charp$

i = Console.Read();

Console.Read()는 문자가 입력될 경우 문자를 입력받아 ASCII의 정수 값을 반환
합니다.

여기서 ASCII 값 i는 사용자가 대문자 K를 입력하였다고 가정하면 75라는 값이 됩니다.

i = Console.Read() <=문자
i는 ASCII 정수값

ch = 9char) i;
읽어 들인 문자는 ASCII 형식의 정수 값으로 i에 저장되어있으므로 출력하려면
int를 char로 형을 변환시켜야 합니다.

문자 -> ch = (char) i ; <= 정수
↑______________________|
ASCII 암호의 정수 값
을 문자로 변환합니다.

문자열을 입력 받았을 경우

gildang@gildang:~/charp$ vim string.cs
gildang@gildang:~/charp$ gmcs string.cs
gildang@gildang:~/charp$ mono string.exe
성명을 입력하세요. hong gildang
hong gildang님 안녕하세요?
gildang@gildang:~/charp$ cat string.cs
using System;
class Class1
{
    static void Main(String[] args)
    {
        String s;
        Console.Write("성명을 입력하세요. ");
        s = Console.ReadLine();
        Console.WriteLine(s + "님 안녕하세요?");
    }
}


gildang@gildang:~/charp$


s 는 s = Console.readLine()이 String s;에서 문자열로 선언되어 있으므로
문자열을 받습니다.

만일 String s;를 생략한다면 String s = console.ReadLine(); 이라 해야 합니다.

정수를 입력 받을 경우

gildang@gildang:~/charp$ vim sumstring.cs
gildang@gildang:~/charp$ gmcs sumstring.cs
gildang@gildang:~/charp$ mono sumstring.exe
첫 번째 정수를 입력하세요. :12
두 번째 정수를입력하세요. : 13
두 수의 합 : 25
gildang@gildang:~/charp$ cat sumstring.cs
using System;

class Class1
{
    static void Main() {
        String s1, s2;
        int a, b, sum;
        Console.Write("첫 번째 정수를 입력하세요. :");
        s1 = Console.ReadLine();
        Console.Write("두 번째 정수를입력하세요. : ");
        s2 = Console.ReadLine();
        a = Convert.ToInt32(s1);
        b = Convert.ToInt32(s2);
        sum = a + b;
        Console.WriteLine("두 수의 합 : " + sum);
    }
}


gildang@gildang:~/charp$


Console.Write("첫 번재 정수를 입력하세요. : ");
메소드 console.Write()는 괄호 안의 내용물을 모두 모니터에 기록하는 명령어입니다.

그런데 WriteLine 대신 Wrire를 사용하여 현재 커서의 위치는 다음 줄로
내려가지 않습니다.

s1 = Console.ReadLine();
키보드에서 문자열 "12"을 입력하고 [enter]를 누르는 순간 변수 s1에는 "12"라는
문자열 값이 임시로 저장됩니다.

a = Convert.ToInt32(s1);

변수 s1은 현재 문자열인 상태이므로 이를 Convert.ToInt32()라는 함수를 사용하여
32비트형의 정수로 변환합니다. 따라서 변수 a는 정수 12라는 값을 가집니다.

sum = a + b

앞에서 정수형을 취하는 변수 a,b는 각각 12와 13을 가지고 있으므로
sum = 25라는 값을 가집니다.
주의 할 점은 등식이 잇을 경우 좌변의 자료형과 우변의 자료형이 같아야 문제가
발생하지 않습니다.

실수를 입력 받을 경우

gildang@gildang:~/charp$ vim  doublestrig.cs
gildang@gildang:~/charp$ gmcs doublestrig.cs
gildang@gildang:~/charp$ mono doublestrig.exe
첫 번째 실수를 입력하세요.: 10.5
두 번재 실수를 입력하세요.: 5.7
 두 수의 합 : 16.2
gildang@gildang:~/charp$ cat doublestrig.cs
using System;

class Class1
{
    static void Main(String[] args)
    {
        String s1, s2;
        double a, b, sum;
        Console.Write("첫 번째 실수를 입력하세요.: ");
        s1 = Console.ReadLine();
        Console.Write("두 번재 실수를 입력하세요.: ");
        s2 = Console.ReadLine();
        a = Convert.ToDouble(s1);
        b = Convert.ToDouble(s2);
        sum = a + b;
        Console.WriteLine(" 두 수의 합 : " + sum);
        }
}

gildang@gildang:~/charp$


화면 출력

키보드 입력 메소드 Read(), ReadLine(0 과 같은 유형으로 화면 출력 메소드는
Write()와 WriteLine() 명령어를 사용합니다.

출력시 화면 출력의 위치와 형식(format)을 지원하기 위하여 다음과 같은 { } 형식을
사용합니다.


                        두 번째 매개변수
Console.WriteLine("s1{0:d} {1:n}", n1, n2)
            --------------
            첫 번째 매개변수

s1은 출력할 문자열을 의미하고 {0:d}와 n1, {1:n)과 n2는 서로 대응 관계를 이룹니다.
즉, 변수 n1의 값은 {0:d}의 위ㅊ와 형식에 맞게 출력되고, 변수 n2의 값을 {1:n}
의 위치와 형식에 맞게 출력됩니다.

{} 안의 ":" 다음 형식 문자가 사용된다는 의미로 해석하면 되고, 형식 문자는 다음과 같은
것들이 있습니다.

형식 문자 설명
C 혹은 c 화폐형으로 표시합니다.
D 혹은 d 10진수로 표시합니다.
E 혹은 e 실수 값을 지수 형식으로 표시합니다.
F 혹은 f 부동 소수점으로 표시합니다.
G 혹은 g 소수점 혹은 정수로 표시합니다.
N 혹은 n 숫자 안에 콤마를 표시합니다.
X 혹은 x 16진수로 표시, X는 16진수가 대문자, x는 소문자로 표시됩니다.

gildang@gildang:~/charp$ vim doublex.cs
gildang@gildang:~/charp$ gmcs doublex.cs
gildang@gildang:~/charp$ mono doublex.exe
1000단위에 콤마 표시 : 12,346
소수점 2째자리까지 표시 : 12345.79
형식  조건없이 표시 : 12345.785
gildang@gildang:~/charp$ cat doublex.cs
using System;
class Class1
{
    static void Main() {
    double x;
    x = 12345.785;
    Console.WriteLine("1000단위에 콤마 표시 : {0:N0}", x);
    Console.WriteLine("소수점 2째자리까지 표시 : {0:F2}", x);
    Console.WriteLine("형식  조건없이 표시 : {0}", x);
    }
}


gildang@gildang:~/charp$


Console.WriteLine("1000단위에 콤마 표시 : {0:N0}", x);
화면 출력시 형식은 {}에서 다음과 같이 잡습니다.
                        N은 천 단위의 콤마를 숫자에 표시합니다.
첫 번재 매개 변수를 가리킵니다.{0:N0} 나머지 0은 소수점 자리 수가 없습니다.

그리고 {0:F2}에서 F는 부동소수점을 의미합니다. 그 뒤에 나타나는 2는 소수점 2째 자리까지 표시함을
의미합니다.

따라서 현재 x의 값은 12345.785인데 쑤점 2째 자리까지 표기하려면 소수점 3째 자리에서
반올림한 수 (12345.79)를 화면에 출력합니다.

{0}에서 형식조건 표시 (:)가 없으므로 형식에 구애 없이 잇는 그대로를 화면에 출력합니다.

이상 여기까지입니다.
감사합니다.

=====================================================================



ubuntu c# gildang how to - 29 ubuntu






=====================================================================



안녕하세요, 저는 길당(홍길한)이라 합니다.

이어서 내용을 올립니다.

프로그램을 작성하다 보면 경우에 따라서는 기본 자료형의 형 변환이 불가피한
경우가 생깁니다. 다음의 경우를 살펴 보도록 합니다.

int a, b, c;
a = 10; b =4;
c = a + b;
c = a / b;

c = a +b;의 경우는 문제가 없습니다. 그러나 c = a / b; 의 경우는 좌변의 유형과
우변의 유형이 다르므로 형 변환을 인위적으로 조작해 주어야 합니다.

형 변환에는 묵시적 형 변환(implicit type conversion)과 명시적 형 변환(explicit type conversion)
두 가지 형태가 있습니다.

묵시적 형 변환은 자동으로 수행해 주는 경우이고, 명시적 형 변환은 프로그래머가
강제적으로 형을 변환시키는 것을 말합니다.

묵시적 형 변환(implicit type conversion)

데이터의 손실이 없이 안전하게 형 변환이 가능할 경우, 즉 크기가 작은 자료형에서 큰 자료형
으로 변환할 경우 , 에러를 발생하지 않고 C#는 내부적으로 자동 형 변환을 해 주는데
이것을 묵시적 형 변환이라 합니다.

명시적 형 변환(explicit type conversion)

작은 자료형에서 큰 자료형으로 변환할 경우 데이터의 손실이 발생합니다.
이를 묵시적으로 변환시키면 자료의 손실을 가져오므로 문제가 발생합니다.
따라서 C#는 에러를 발생시켜 프로그래머로 하여금 강제적으로 데이터 형을 변환시켜
데이터의 손실을 방지할 의사가 있는지를 확인합니다.

이는 프로그래머의 실수를 미연에 방지할 수 있는 방법이 됩니다.

만일 프로그래머가 강제적으로 데이터형을 변환시킬 의사가 잇을 경우에는
casting 함수를 사용하여 데이터 유형을 변환시켜야 합니다.

작 8비트 16비트 32 비트 64비트 32비트 64비트
은 byte short int long float double                                                                        [ 큰 자료형]
          char
자 ------------------------------------------------------------------------------------------------> 묵시적 형 변환 (Implicit Type Conversion) : 자동

형 <----------------------------------------------------------------------------------------------- 명시작 형 변환(explicit Type conversion) : 수동


이제 예를 보기로 합니다.

gildang@gildang:~/charp$ vim conversion.cs
gildang@gildang:~/charp$ gmcs conversion.cs
gildang@gildang:~/charp$ mono conversion.exe
c = 2
d = 2
e = 2.5
n = 2
gildang@gildang:~/charp$ cat conversion.cs
using System;
class Class1
{
    static void Main(String[] args)
    {
        int a = 10, b = 4, c, n;
        double d, e;
        c = a/b;
        d = a/b;
        e = (double) a/b;
        n = (int) e;
        Console.WriteLine("c = " + c);
        Console.WriteLine("d = " + d);
        Console.WriteLine("e = " + e);
        Console.WriteLine("n = " + n);
    }
}


       
gildang@gildang:~/charp$


세미콜론(;) 표시는 그 줄이 끝났다는 표시이므로 다음과 같이 한 줄로 작성하여도
무방합니다.
c = a/b;
d = a/b;
e = (double) a/b;

를 c = a/b; d = a/b; e = (double) a/b;

c = a / b;
현재 좌변과 우변은 모두 정수형의 변수로 기술되었습니다.
a/b, 즉 "정수/정수"의 값은 정수의 값이 되어야 하므로 2.5가 아닌
, 뒤 소수는 버린 정수 2가 됩니다. 따라서 c는 정수 2를 갖게 되는 것입니다.

d =  a / b;
a/b의 값은 2.5이나 앞에서 설명한 바와 같이 2의 정수 값이 되는데 d는 소수
(double)형으로 선언이 되어 있으므로 묵시적 형 변환이 이루어져 2.0이 됩니다.

2.0(소수형)
d =  a / b;
묵시적 형 변환 <- 2(정수형)

이 경우 작은 데이터형에서 큰 데이터 형으로 변환하므로 데이터의 손실이 없습니다.
이때는 다음과 같이 자동으로 형을 변환하는 묵시적 형 변환이 이루어집니다.

작은 데이터 형(int : 32 bit) ==> 묵시적 형 변환  d 큰 데이터형(double : 64 bit)

e = (double) a / b;

변수 e는 double 형이므로 역시 형태는 소수형입니다. 그런데 a/b 앞에 (double)
이라는 캐스팅 함수(명령어)를 사용하여 프로그래머가 강제적으로 정수에서 double
형 변환을 해 주 었습니다.

즉, 명시적 형 변환이 이루어 졌는데, 여기서 주목해야 하는 것은 소수점 이하의 값을
잃지 않는다는 점입니다.

2.5(소수형)
e = (double) a/b;

명시적 형 변환 < == 2.5


n = (int) e;

우변 e는 소수인데 좌변은 정수입니다. 우변 e가 n의 자료형보다 크므로, 즉 데이터
의 손실을 초래하므로, 묵시적 형 변환이 이루어지지 않습니다.
따라서 (int)를 사용하여 명시적 형 변환을 해야 합니다.

만일 n = e;라고 작성하였다면 묵시적 변환이 이루어지지 않으므로 에러가 발생합니다.

이 경우 큰 데이터 형(double)에서 작은 데이터형(int)으로 변환해야하므로 데이터에는
손실을 초래합니다. 따라서 명시적으로 형을 변환하여야 합니다.

묵시적 형 변환

gildang@gildang:~/charp$ vim conversion2.cs
gildang@gildang:~/charp$ gmcs conversion2.cs
gildang@gildang:~/charp$ mono conversion2.exe
a + b = 30
gildang@gildang:~/charp$ cat conversion2.cs
using System;

class Class1
{
    static void Main(String[] args)
    {
        int a, b;
        double c;
        a = 10; b = 20;
        c = a + b;
        Console.WriteLine("a + b = " + c);
    }
}


gildang@gildang:~/charp$


위의 경우는 우변보다 큰 자료형이라서 우변에서 만들어진 모든 값을 좌변에서 소화할 수
있으므로 묵시적 형 변환이 자동으로 이루어졌습니다.

--------------------------------------------------------------------------------------------------------------------------------------------------------------

참고로 부연 적으로 말씀드리자면, 저도 역시 공부를 하기 때문에 이모든 문서는
강의 가 아닙니다.

다만 저 역시 인터넷에 올리게 될 때 하루 하루 시간을 들여서 공들여서 차근차근
조금씩 조금씩 쌓여가며, 탄탄하게 다져나가는 것이 중요하다고 생각되기 때문에

너무 많은 무리를 해서 할려고 하지는 않습니다.

다만, 저는 하루 일과가 거의 공부로 지내기 때문에 하루에 몇 건씩의 문서를 올리게
됩니다.

음..정말 감사드리구요...

오늘은 찬찬히 공부를 하면서 지내야 겠습니다.

이상입니다.

.......................................................................................................................



ubuntu c# gildang how to - 28 ubuntu




=====================================================================

안녕하세요, 저는 길당(홍길한)이라 합니다.

참고 서적은 정석 C#.NET 입니다.

오늘은 상수에 관해서 글을 씁니다.

상수(Constant)는 프로그래머가 기억하기 힘든 값을 기억하기 쉬운 문자로 정하여 프로그램
작성을 편리하게 하여줍니다.

상수는 반드시 초기화하여야 하며 초기화된 값은 변수와 달리 임의로 변경할 수
없습니다.

상수의 선언 형식은 다음과 같습니다.

const                     double      PI =   3.14159;
---------            ----------------   --------        ----------------
상수 선언 키워드 PI의 자료형 상수명     초기값

gildang@gildang:~/charp$ vim piconstant.cs
gildang@gildang:~/charp$ gmcs piconstant.cs
gildang@gildang:~/charp$ mono piconstant.exe
반지름 r 인 원의 넓이 : 25.1328
gildang@gildang:~/charp$ cat piconstant.cs
using System;

class Class1
{
    static void Main()
    {
        const double PI = 3.1416;
        double area, r = 2;
        area = PI*r*r*2;
        Console.Write("반지름" + " r 인 원의 넓이 : ");
        Console.WriteLine(area);
    }
}


gildang@gildang:~/charp$


다음은 자료형입니다.

모든 변수는 변수가 정의된 유형에 따라 같은 유형의 자료를 저장할 수 있습니다.
예를 들어 int v; 라고 선언하면 변수 v에는 정수라는 자료형만을 가질 수 있습니다.

자료형에 는 다음과 같이 크게 참조 자료형(Reference Data Type)과 기본 자료형(Basic Data Type)
으로 구분할 수 있습니다.

자료형 크기 비트(bit) 설명
논리형 bool 1 참 혹은 거짓
문자형 char 16 유니코드 수
정수형 byte(바이트형) 8 -128 ~ +127
          short(짧은 정수형) 16 -13768 ~ +32767
          int(정수형) 32 -2147483648 ~ +2148483647
         long(긴정수형) 64 -9223372036854775808 ~ +9223372036854775807
실수형 float 32 -3.4E38 ~ + 3.4E38
          double(긴실수형) 64 -3.4ㄸ308 ~ + 1.7ㄸ308
참조 자료형 클래스 참조형 객체 참조를 위한 자료형
                  인터페이스 참조형 인터페이스 객체 참조를 위한 자료형
                  배열참조형 객체 배열 참조를 위한 자료형


자료형 예제입니다.

gildang@gildang:~/charp$ vim data.cs
gildang@gildang:~/charp$ gmcs data.cs
gildang@gildang:~/charp$ mono data.exe
정수 : 3
실수 : 2.342
문자 : a
gildang@gildang:~/charp$ cat data.cs
using System;

class Class1
{

    static void Main() {
        int a = 3;
        double b = 2.342;
        char c  = 'a';
        Console.WriteLine("정수 : " + a);
        Console.WriteLine("실수 : " + b);
        Console.WriteLine("문자 : " +c);
    }
}


gildang@gildang:~/charp$


Main(string[] args)와 Main()의 표현은 차이가 있지만 현재로써는 동일하게 보아도
무방합니다.

다음 Main()의 시작 표시 "{"와 끝 표시 "}"는 영역만 맞으면 다음과 같이 표기하여도
모두 동일합니다.

static void Main() {
....
}

static void Main()
{
...
}

static void Main(){
    ...
            }

int a = 3;
만일 int a 3.7; 이라고 선언하면 "암시적으로 'double' 형식을 'int' 형식으로
변환할 수 없습니다."라는 에러가 발생합니다.
에러의 원인은 변수 a가 정수형인데 소수 3.7을 대입시키므로 문제가 됩니다.

문제가 되지 않으려면 양변의 변수형과 자료형이 같아야 합니다.

변수명 = 자료형

즉, 변수는 정수만을 가질 수 있는데 소수 3.7을 넣으면 문제가 발생합니다.

그러면 변수 선언부에서 변수를 선언함과 동시에 숫자를 대입시키는 방법외에도
다음과 변수를 선언하고 만들어진 변수에 수를 대입하는 방법에 대해서 예를
통하여 알아 보도록 합니다.

gildang@gildang:~/charp$ vim data2.cs
gildang@gildang:~/charp$ gmcs data2.cs
gildang@gildang:~/charp$ mono data2.exe
정수 3
실수 2.342
문자 a
gildang@gildang:~/charp$ cat data2.cs
using System;

class Class1
{
    static void Main()
    {
        int a; double b; char c;
        a = 3;
        b = 2.342;
        c = 'a';
        Console.WriteLine("정수 " +a);
        Console.WriteLine("실수 " +b);
        Console.WriteLine("문자 " +c);
    }
}


   
gildang@gildang:~/charp$


Console.WriteLine("정수 " +a);

변수 a는 a라는 문자 자체가 출력되는 것이 아니라 a가 가지는 내용을 , 3이라는
숫자가 출력이 됩니다.

오늘은 아침에 가볍게 진행을 하고
다음에는 자료형의 변한에 대해서 글을 올릴 것입니다.

이상입니다.
감사합니다...

=====================================================================



ubuntu gildang bioinformatics how to - RNA global ubuntu










====================================================================

안녕하세요, 저는 길당(홍길한)이라 합니다.

이어서 내용을 올립니다.

DNA를 RNA로

펄 바이오인포메틱스 프로그래머가 수행하면서 가장 시간을 많이 소비하게
될 부분들이 [예제 1]과 [예제 2]와 같이 비슷한 류의 문제를 약간씩

변환시키는 것입니다.

프로그래머인 여러분은 DNA든 반백질이든 GenBank 엔트리이든 또는 여러분이
가진 어떤 것이든 데이터를 갖게 될 것이고 일부 결과를 프린트할 것입니다.

[예제 3]은 DNA를 다루는 또 다른 프로그램으로서 DNA를 RNA로 전사합니다.
실제 세포에서 DNA에서 RNA로의 전사는 정교하고, 복잡하며, 오류를 정정하는 복잡한
일련의 절차입니다.

하지만 여기에서 전사는 간단한 치환입니다.

DNA가 RNA로 전사될 때 모든 T는 U로 변경되며 그것이 프로그램이 알아야 할 모든 것입니다.

[예제 3]

gildang@gildang:~/bioperl$ cat rna.pl
#!/usr/bin/perl -w
# Transcribing DNA into RNA

# The DNA
$DNA = 'ACGGGAGGACGGGAAAATTACTACGGCATTAGC';

# Print the DNA onto the screen
print "Here is the starting DNA:\n\n";

print "$DNA\n\n";

# Transcribe the DNA to RNA by substituting all T's with U's.
$RNA = $DNA;

$RNA =~ s/T/U/g;

# Print the RNA onto the screen
print "Here is the result of transcribing the DNA to RNA:\n\n";

print "$RNA\n";

# Exit the program.
exit;
gildang@gildang:~/bioperl$


위의 예제의 결과는 다음과 같습니다.

gildang@gildang:~/bioperl$ perl rna.pl
Here is the starting DNA:

ACGGGAGGACGGGAAAATTACTACGGCATTAGC

Here is the result of transcribing the DNA to RNA:

ACGGGAGGACGGGAAAAUUACUACGGCAUUAGC
gildang@gildang:~/bioperl$


이 짧은 프로그램은 펄의 중요한 특성을 보여주고 있습니다. 즉 그것은 DNA의 문자열과 같은
텍스트 데이터를 손 쉽게 다룰 수 있다는 것입니다.

변환, 역전, 치환, 삭제, 재배열 기타 상이한 방식으로 조작할 수 있습니다.
Perl의 이러한 기능이 bioinformatics 분야와 프로그래머 들 사이에서 성공을 거둘 수 있었던
중요한 이유 가운데 하나입니다.

먼저 이 프로그램은 DNA 데이터를 복사하여 $RNA라고 하는 변수에 그 값을 할당합니다.

$RNA = $DNA;

이 문이 실행된 후에 실제로 DNA를 포함하는 $RNA라 하는 변수가 존재한다는 점에 유의하시면
됩니다.

변수명은 어떤 것을 사용해도 무방하지만 (변수명은 여러분 마음대로 지울 수 있습니다 ^^*)
아무렇게나 변수명을 사용하면 나중에 혼란을 초래할 수 있을 것입니다.

이 경우 주석이 먼저 나오고 , 실제로 변수 $RNA가 RNA 정보를 포함하도록 하는 문이
곧 뒤를 잇습니다.

따라서, $RNA로 하여금 RNA 정보를 제외한 어떠한 것도 포함하지 않도록 하는 방법이 있습니다.

($RNA = $DNA) =~ s/T/U/g;

위의 예제에서 전사가 다음의 문에서 일어납니다.

$RNA =~ s/T/U/g;

이 문에는 두 개의 새로운 항목이 있습니다. 바인딩 연산자(=~)와 치환 명령어 s/T/U/g
가 그것입니다.

바인딩 연산자가 문자열을 포함하는 변수 위에 뚜렷하게 사용되었습니다.

여기에서 변수 $RNA는 DNA 서욜 데이터를 포함합니다. 바인딩 연산자는
"오른 쪽에 있는 연산을 왼쪽 변수에 있는 문자열에 적용하라"는 의미입니다.

 변수
|
|
$RNA =~ (바인딩 연산자)  s/T/U/g;
                  연산자를 구분하는 구분자

            s : 치환 연산자
            T: 대체될 패턴의 정규 표현식
            U : 패턴을 대체 할 치환문자
            g : 패턴 수정자  g g는 "globally throught the string"를 의미합니다.

다른 명령 옵션
i : 대소문자 구별을 안할 때
m : 여러 라인(^과 $를 새 라인에 포함되도록 매치합니다
s : 힌 개의 라인 [ 을 새 라인에 매치합니다
x : 패턴 내에 주석을 허용합니다.
o : 속도를 위해 한번만 컴파일합니다.
e : 치환자를 펄 코드로 간주합니다.

위에서와 같이 치환 연산자는 약간의 설명을 더 필요로 합니다. 명령어의 상이한
부분들이 슬래시에 의해서 분리됩니다. (또는 적용 범위가 결정됩니다.)
먼저 s는 이것이 치환임을 가리킵니다.

첫번째 / 다음에는 T가 오며, 이는 문자열에서 치환될 원소를 나타냅니다.
두번째 / 다음에 U가 오며 T와 치환될 원소를 나타냅니다.
마지막으로 세번째 / 다음에는 g가 옵니다.

이 g는 "global"의 역자이며 문에서 이 부분에 나타날 수 있는 여러 개의 수정자 가운데 하나입니다.
전역 방식(Global)은 "전체 문자열의 처음부터 끝까지 이러한 치환을 하라"는 의미이며
그것은 곧 문자열의 어느 곳에서나 치환이 가능함을 뜻합니다.

그러므로 문의 의미는 '변수 $RNA에 저장된 문자열 데이터에 있는 U를 모두 T로
치환하라"는 것입니다.



이상 여기까지입니다.

감사합니다 ^-^/



1 2 3 4