shift 는 array의 맨 앞에서 element 를 빼내고 (stack 의 pop 에 해당)
unshift 는 array의 맨 앞에 element 를 넣는다 (stack 의 push 에 해당).
Monday, December 31, 2012
Perl에서 두 array 를 합치는 법
my @a = (1, 3, 5, 7);
my @b = (2, 4, 6, 8);
my @c = (@a, @b);
print(join(", ", @c) . "\n");
키워드 : 합침, union
Labels:
Perl
array 를 hexadecimal 의 string 으로 받는 함수
1: sub atohexstring
2: {
3: my $s = "";
4: foreach(@_){
5: $s .= tohex($_) . " ";
6: }
7: chop($s);
8: return $s;
9: }
다음과 같이 쓰면 됨. my @a = hexarray("A0 A1 A2 FF FE FD");
print("@ " . atohexstring(@a) . "\n");
Labels:
Perl
byte의 array를 string으로 'serialize' 하는 법
1: sub TESTserializeArray
2: {
3: my @a = hexarray("A0 A1 A2 FF FE FD");
4: my $s = serializeArray(@a);
5: print(stohex($s) . "\n");
6: }
7: sub serializeArray
8: {
9: my $s = "";
10: foreach(@_){
11: $s .= pack('C1', $_);
12: }
13: return $s;
14: }
Perl 에서 binary file 등을 다룰 때는 byte의 연속을 string 으로 보고 작업하므로 이 함수는 유용하다.
Labels:
Perl
string 을 바이트 단위의 hexadecimal 로 얻어내는 Perl 함수
이것은 'serialize' 된 데이터를 hexadecimal 값으로 보는데 유용한 함수이다.
1: sub TESTstohex
2: {
3: my $s = "";
4: $s .= pack('C1', 255);
5: $s .= pack('C1', 254);
6: my $h = stohex($s);
7: print($h);
8: }
9: sub stohex
10: {
11: my $s = $_[0];
12: my $result = "";
13: my @a = unpack('(C1)*', $s);
14: foreach(@a){
15: $result .= tohex($_) . " ";
16: }
17: chop($result);
18: return $result;
19: }
4행에서 pack 함수를 쓰지 않으면 255 의 숫자 2, 5, 5가 각자 하나씩의 문자가 되어 들어가버린다.
Labels:
Perl
Perl에서 bit shifting 하기
my $n = 0b1111;
print("$n\n");
$n >>= 2;
print("$n\n");
my $m = 0xFF;
print("$m\n");
키워드 : binary, 2진수, 16진수
Labels:
Perl
Object Oriented Programming in Perl
Object Oriented Programming in PERL
Perl Object Oriented Meta-Tutorial
키워드 : OOP, package, separate files
Perl Object Oriented Meta-Tutorial
키워드 : OOP, package, separate files
Labels:
Perl
Perl 에서 max min function 쓰는 법
max(), min() 함수를 쓰려면 다음과 같이 먼저 로딩을 해야 한다.
use List::Util qw[min max];
print(min(4,6) . "\n");
print(max(1, 2, 3, 4, 5, 6) . "\n");
print(max(666) . "\n");
출처 : Min and max functions in Perl
Labels:
Perl
Sunday, December 30, 2012
hexadecimal 의 array 를 string 으로 얻어내는 Perl 함수
my @a = hexarray("EF F0 00 0F 01 02");
my $s = tohexs(@a);
print("$s\n");
sub tohexs
{
my $s = "";
foreach(@_){
$s .= sprintf("%02X ",$_);
}
chop($s);
return $s;
}
sub hexarray
{
my @s_ = split(/ /, $_[0]);
my @a = ();
foreach(@s_){
push(@a, hex($_));
}
return @a;
}
tohexs 는 tohexstring 의 줄임.
Labels:
Perl
Perl 에서 array 와 string 사이의 변환
array 를 string 으로 변환해주는 Perl 함수
키워드 : print array, Perl 에서 array 를 print 해주기
sub atos
{
my $s = join(", ", @_);
return $s;
}
다음과 같이 쓰면 array 를 간편히 print 해주기 쉽다. my @a = (10, 20, 30, 40);
print(atos(@a)."\n");
string 을 array 로 변환해주는 Perl 함수 sub stoa
{
return split(//, $_[0]);
}
Perl에서 string의 문자 하나하나를 다루는 법 참조키워드 : print array, Perl 에서 array 를 print 해주기
Labels:
Perl
Perl 에서 integer 를 hexadecimal 로 바꿔주는 함수
다음 함수는 decimal 을 hexadecimal 로 변환해준다.
8비트 integer 를 두자리 hexadecimal 로 바꿔주는 목적만이라면 다음과 같이 해도 된다.
sub tohex
{
my $s = sprintf("%X",$_[0]);
if(length($s) % 2 == 1){
$s = "0" . $s;
}
return $s;
}
사용법은 다음과 같다. print(tohex(254)."\n"); 결과 : 254의 16진수 표기인 FE 가 찍힌다.8비트 integer 를 두자리 hexadecimal 로 바꿔주는 목적만이라면 다음과 같이 해도 된다.
sub tohex
{
sprintf("%02X",$_[0]);
}
Labels:
Perl
hexadecimal string 을 integer array 로 만들어주는 Perl 함수
sub hexarray
{
my @s_ = split(/ /, $_[0]);
my @a = ();
foreach(@s_){
push(@a, hex($_));
}
return @a;
}
다음과 같이 사용한다. my $s = "FF FE 0A 10";
my @a = hexarray($s);
print(join(",",@a) . "\n");
결과는 255,254,10,16 와 같이 나온다.키워드 : 16진수
Labels:
Perl
Saturday, December 29, 2012
Perl 에서 array of arrays 를 다루는 방법
1: my @aa = ();
2: my @a = ("Mega", "Giga", "Tera");
3: my @b = ("Centi", "Milli", "Nano");
4: push(@aa, \@a);
5: push(@aa, \@b);
6: foreach(@aa){
7: foreach(@$_){
8: print();
9: print(" ");
10: }
11: print(" -> First Element is $_->[0]");
12: print("\n");
13: }
Labels:
Perl
Perl 에서 array 를 function 의 argument 로 넘기는 방법
1: my @a = (90, 100, 200, 300, 400);
2: printAll(\@a);
3:
4: my $i = 1;
5: print("Print one by one : ");
6: printAndInc(\@a, \$i);
7: printAndInc(\@a, \$i);
8: printAndInc(\@a, \$i);
9: print("\n");
10:
11: sub printAndInc
12: {
13: my ($pa, $i) = @_;
14: print("$pa->[$$i] ");
15: $$i++;
16: }
17:
18: sub printAll
19: {
20: my ($pa) = @_;
21: my $result = join(" ", @$pa);
22: print("Print all : $result\n");
23: }
13행에서 my (@a, $i) = @_; 와 같이 array 로 받으면 제대로 작동하지 않는다.키워드 : 함수, parameter
Labels:
Perl
OS X terminal 에서 화면 깨끗이 clear 하기
Command + K 하면 된다.
clear 명령을 쓰면 기존의 명령어는 스크롤해 올라가면 그냥 위쪽에 남아 있다.
키워드 : 터미널
clear 명령을 쓰면 기존의 명령어는 스크롤해 올라가면 그냥 위쪽에 남아 있다.
키워드 : 터미널
Labels:
UNIX
printf 에서 0의 개수를 채워주는 방법
0의 개수를 채워주는 format string의 형태는 %0[숫자]X, %0[숫자]d 처럼 하면 된다. 예를 들어 바이트를 hexadecimal 로 출력할때 0F, 0A 처럼 두자리로 포맷해주려면 다음과 같이 하면 된다.
레퍼런스 : http://www.cprogramming.com/tutorial/printf-format-strings.html
sprintf("%02X ",$_);
키워드 : Perl레퍼런스 : http://www.cprogramming.com/tutorial/printf-format-strings.html
Labels:
Perl
Perl 에서 decimal 과 hexadecimal 사이의 변환
Decimal → Hexadecimal
Hexadecimal → Decimal
키워드 : 10진수, 16진수, 십진수
print(tohex(254));
sub tohex
{
my $s = sprintf("%X",$_[0]);
if(length($s) % 2 == 1){
$s = "0" . $s;
}
return $s;
}
출처 : Perl 에서 integer 를 hexadecimal 로 바꿔주는 함수Hexadecimal → Decimal
print(hex("FF"));
레퍼런스 : how to convert decimal to hexadecimal in perl키워드 : 10진수, 16진수, 십진수
Labels:
Perl
Subscribe to:
Posts (Atom)