반응형
728x170
안녕하세요~
저번 글까지 펄의 서브루틴, 펄을 이용한 웹 페이지 출력 등을 진행해 보았습니다
하나씩 정리해보자 라는 생각으로 블로그에 정리를 시작했는데요
어느덧 자료가 많이 쌓였네요
하루에 1시간도 공부를 못하긴 하지만 그래도 짬짬히 공부했더니 많이 쌓였네요
어쨋든 이번에는 이 서브루틴을 이용해서 웹 페이지에 출력하려고 합니다.
일종의 함수화이죠
해시의 값에 따라 테이블 개수가 달라지는 방식인데요
처음엔 아래 사진 처럼 진행될 것입니다.
그리고 해시 개수를 늘리면 아래 사진처럼 될 것입니다.
여기서의 핵심은 서브루틴의 구조는 바뀌지 않는다!입니다.
단지, 전달해 주는 값만 바뀌는 거죠
바로 소스코드 보여 드리겠습니다~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 |
%x_label = (
1=>"11",
2=>"22",
3=>"33",
4=>"44",
5=>"55",
);
%y_label = (
1=>"66",
2=>"77",
);
my_custom_table(\%x_label, \%y_label, "test!");
sub my_custom_table
{
my ($x_label, $y_label, $text) = @_;
$x_size = keys(%x_label);
$y_size = keys(%y_label);
print "Content-type: text/html \n\n";
print "<html>";
print "<body>";
print "<br><center><table align=center width=850 border=1 > \n";
print "<tr><td> </td> \n";
for my $i(1..$x_size)
{
print "<td>$x_label{$i}</td>\n";
}
print "</tr>\n";
for my $i(1..$y_size)
{
print "<tr><td>$y_label{$i}</td>\n";
for my $j(1..$x_size)
{
if($j == $x_size)
{
print "<td><input type=\"text\" size=5 readonly />$text</td>\n";
}
else
{
print "<td><input type=\"text\" size=5 />$text</td>\n";
}
}
print "</tr>\n";
}
print "</table></center> \n";
print "</body>\n";
print "</html>\n";
} |
cs |
이렇게 되는 소스입니다
맨 위에 해시를 2개 선언했죠? 그리고 이 2개의 해시와, table 안에 출력할 text를 인자로 보냅니다.
my_custom_table이라는 함수는 이 여러개의 값을 받는데요
서브루틴이 여러개의 값을 받으려면 저렇게 받을 수 있습니다.
그러면 각각의 값이 각각의 스칼라값으로 들어가게 되죠
여기서 햇갈리는게 해시 값을 스칼라 즉 $로 받는다는 겁니다.
근데 실제 값은 해시로 적용되어요.
저도 처음엔 이게 이해가 안되었는데(사실 지금도 이해가 잘 안되요) 그냥 뭐라고 해야할까요
가슴으로 받아들여지네요
그리고 아래처럼 해시 값을 바꾸면 2번째 사진 처럼 나오게 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
%x_label = (
1=>"11",
2=>"22",
3=>"33",
4=>"44",
5=>"55",
6=>"add_x_1",
6=>"add_x_2",
);
%y_label = (
1=>"66",
2=>"77",
3=>"add_y1",
3=>"add_y2",
); |
|
이렇게 함수화하면 편리하겠죠?
오늘은 여기까지!
반응형
그리드형
'perl' 카테고리의 다른 글
펄 문자열 split(자르기), join(붙이기) (0) | 2017.10.30 |
---|---|
펄 cgi get, post 진행해보기 (0) | 2017.10.19 |
펄 자바스크립트 사용 (0) | 2017.10.11 |
펄 함수(서브루틴) (perl subroutine) (0) | 2017.10.10 |
펄 해시(perl hash), 삽입, 삭제(delete), keys함수, values 함수 (0) | 2017.09.25 |