Narisa.com: Let's PERL - Narisa.com

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Let's PERL ÁÒà¢Õ¹ perl ¡Ñ¹ Rate Topic: -----

#1 User is offline   TongPha 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 49
  • Joined: 20-November 05

  Posted 21 November 2005 - 04:14 PM

Perl (Practical Extraction and Report Language)
à»ç¹ interpreted procedural programming language ·Õè¶Ù¡ÃÔàÃÔèÁâ´Â Larry Wall â´Â·ÕèÁդسÊÁºÑµÔµèÒ§æ¨Ò¡ C, shell scripting (sh), awk, sed áÅÐÍ×è¹æ ÃÇÁ¶Ö§ Lisp
0

#2 User is offline   TongPha 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 49
  • Joined: 20-November 05

Posted 21 November 2005 - 04:51 PM

àÃÔèÁáá perl ¶Ù¡¾Ñ²¹Ò¢Öé¹à¾×èÍãªé·Ó§Ò¹¡Ñº¢éÍÁÙÅ·Õèà»ç¹ text áµè»Ñ¨¨ØºÑ¹ÊÒÁÒö·Ó§Ò¹µèÒ§ä´éËÅÒ¡ËÅÒ àªè¹ System Administration, Web Development, Network Programming, GUI Development

µÑÇÀÒÉÒ¶Ù¡Í͡ẺÁÒãËé ãªé§Ò¹ä´é§èÒ áÅÐ ÁÕ»ÃÐÊÔ·¸ÔÀÒ¾ ÁÒ¡¡ÇèÒ·Õè¨Ðà¹éÒ´éÒ¹¤ÇÒÁÊǧÒÁ
¤Ø³ÊÁºÑµÔËÅÑ¡æ¡ç¤×Í ¤ÇÒÁ§èÒÂ㹡ÒÃãªé§Ò¹, à»ç¹ÀÒÉÒẺ procedural áÅÐ OOP Áտѧ¡ìªÑ¹·ÕèÁÒ¾ÃéÍÁ¡ÑºµÑÇÀÒÉÒ㹡Ò÷ӧҹ¡Ñº¢éÍÁÙÅ·Õèà»ç¹ text áÅÐÁÕâÁÅÙÅãËéãªé ÁÒ¡ÁÒÂ

Language Feature
â¤Ã§ÊÃéÒ§ËÅÑ¡æ¢Í§ÀÒÉÒä´éÂ×ÁÁÒ¨Ò¡ C â´Âà»ç¹ÀÒÉÒ·ÕèÁÕÅѡɳРprocedural, ÁÕ variables, expressions, assignment statements, brace-delimited code blocks, control structure, áÅÐ subroutines.

Perl ä´éÃѺÅѡɳТͧ shell scripting ÁÒàªè¹¡Ñ¹ â´ÂàÃÔèÁááà»ç¹ interpreted ( áµè»Ñ¨¨ØºÑ¹Ãѹ㹠virtual machine àªè¹à´ÕÂǡѺ java) µÑÇá»Ã·Ø¡µÑǨÐÁÕÊÑ­Åѡɳì (sigil) ¹Ó˹éÒ à¾×èͺ͡ª¹Ô´¢éÍÁÙŢͧµÑÇá»Ã ã¹áµèÅÐ context áÅÐàªè¹à´ÕÂǡѺ Unix shells perl Áտѧ¡ìªÑ¹ÊÓËÃѺ§Ò¹·ÕèãªéºèÍÂæàªè¹ sorting ÁÒãËé

Perl ÁÕ associative arrays ( hash ) «Öè§ä´éÁÒ¨Ò¡ awk áÅÐ Regular Expressions ¨Ò¡ sed «Ö觪èÇÂãËé¡Ò÷ӧҹ¡Ñº text §èÒ¢Öé¹

Perl 5 ÁÕ¡ÒÃà¾ÔèÁàµÔÁ¤ÇÒÁÊÒÁÒö´éÒ¹ complex data structure, first-class function (àªè¹ closure ), ¡ÒÃà¢Õ¹Ẻ OOP ÃÇÁ¶Ö§ reference, packages, class-based method dispatch.

Perl ·Ø¡àÇÍÃìªÑ¹ ÁÕ automatic data typing áÅÐ memory management «Öè§ perl interpreter ¨ÐÃÙéÇèÒµÑÇá»ÃµÑÇä˹ÁÕ¢éÍÁÙŪ¹Ô´ÍÐäà ( int, double or string ) µéͧãªéà¹×éÍ·Õè㹡ÒÃà¡çº¢éÍÁÙÅà·èÒäà â´Â¨Ð¨Í§à¹×éÍ·Õè áÅÐ ¤×¹à¹×éÍ·Õè˹èǤÇÒÁ¨ÓãËéâ´ÂÍѵâ¹ÁÑµÔ (¤ÅéÒÂæ Garbage Collection ã¹ Java ) ¡ÒÃá»Å§ª¹Ô´¢Í§¢éÍÁÙŨзÓãËéâ´ÂÍѵâ¹ÁѵԢ³Ð run time áµè¶éÒ¢éÍÁÙŪ¹Ô´ã´äÁèÊÒÁÒöá»Å§ä´é ¨Ð·ÓãËéà¡Ô´ fatal errors

This post has been edited by TongPha: 21 November 2005 - 04:52 PM

0

#3 User is offline   TongPha 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 49
  • Joined: 20-November 05

  Posted 21 November 2005 - 05:25 PM

Implementation
àÃÔèÁáá Perl ¶Ù¡¾Ñ²¹Ò¢Öé¹ÁÒà»ç¹ Interpreter «Öè§à¢Õ¹¢Ö鹨ҡÀÒÉÒ C áÅÐÁÕâÁ´ÙÅÁÒ¡ÁÒ·Õèà¢Õ¹¢Ö鹨ҡ perl áÅÐ c Source Distribution 㹻Ѩ¨ØºÑ¹ÁÕ¢¹Ò´»ÃÐÁÒ³ 12 MB ËÅѧ¨Ò¡ÂèÍáÅéÇ µÑÇ interpreter à¢Õ¹¢Öé¹ÁÒ¨Ò¡ÀÒÉÒ C »ÃÐÁÒ³ 150,000 ºÃ÷Ѵ áÅж١ compile ÍÍ¡ÁÒà»ç¹ executable »ÃÐÁÒ³ 1 MB ã¹áµèÅÐ platform áµèÇèÒµÑÇ interpreter ¡çÊÒÁÒö¹Óä» compile à»ç¹ link library áÅÐÃÇÁà¢éÒä»äÇéã¹â»Ãá¡ÃÁÍ×è¹ä´é

µÑÇ interpreter ¶Ù¡Í͡ẺÁÒẺ Object Oriented Architecture Êèǹ»ÃСͺÀÒÂ㹢ͧ perl ¶Ù¡à¢Õ¹¢Öé¹ÁÒâ´Âãªé C struct ¡Ò÷ӧҹ¡Ñºâ¤Ã§ÊÃéÒ§àËÅèÒ¹Ñé¹¶Ù¡à¢Õ¹¢Öé¹â´Âãªé macros, typedefs áÅÐ functions «Öè§ÃÇÁ¡Ñ¹à»ç¹ Perl C API

¡Ò÷ӧҹ¢Í§ Perl program ¨Ðáºè§ÍÍ¡à»ç¹ 2 ¢Ñ鹵͹
1. compile-time : perl interpreter ¨Ð parse text file ÍÍ¡à»ç¹ syntax tree
2. run-time : perl interpreter ¨ÐÃѹâ»Ãá¡ÃÁâ´ÂÃѹ¤ÓÊÑè§µÒÁ tree ·Õèä´é¨Ò¡¢Ñé¹ 1

â´Â·Õè perl interpreter ¨Ð·Ó¡Òà parse text file à¾Õ§¤ÃÑé§à´ÕÂÇ áÅзӡÒà optimize syntax tree ¡è͹·Õè¨Ð execute ¡ÒÃ·Ó compile-time optimizations »ÃСͺ´éÇ constant folding, context propagation áÅÐ peephole optimization

Perl ÁÕÅѡɳРcontext-free grammar «Öè§äÁèÊÒÁÒö parse ´éÇ Lex/Yacc ẺÀÒÉÒ·ÑèÇæä» áµèä´éÊÃéÒ§ lexer ¢Öé¹ÁÒãËÁè â´Â¡ÒÃá¡éä¢ GNU Bison à¾×èÍÊÒÁÒöÃͧÃѺ¤ÇÒÁ«Ñº«é͹¢Í§ Perl â´ÂÁÕ¤Ó¡ÅèÒÇÇèÒ
only perl can parse Perl
«Öè§ËÁÒ¤ÇÒÁÇèÒ ÁÕáµè Perl Interpreter à·èÒ¹Ñé¹·ÕèÊÒÁÒöá»ÅÀÒÉÒ Perl ä´é
0

#4 User is offline   TongPha 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 49
  • Joined: 20-November 05

  Posted 21 November 2005 - 05:34 PM

ÁÒàÃÔèÁ¡Ñ¹àÅ :D
â¤Ã§ÊÃéÒ§ÀÒÉÒ (Language Structure)
µÑÇÍÂèÒ§â»Ãá¡ÃÁ Hello World!!

#!/usr/bin/perl -w
print "Hello, World!!\n";


ºÃ÷Ѵáá ¨ÐºÍ¡ÇèÒµÑÇ perl interpreter ÍÂÙè·Õèä˹ ÅѡɳÐà´ÕÂǡѹ¡Ñº shell script ÊèǹºÃ÷Ѵ·ÕèÊͧ¨Ð¾ÔÁ¾ì¤ÓÇèÒ Hello, World!! ÍÍ¡ÁÒ ¾ÃéÍÁ·Ñé§¢Ö鹺Ã÷ѴãËÁè (\n)

ã¹Ãкº Windows »¡µÔ¨ÐàÃÕ¡ãªéâ»Ãá¡ÃÁµÒÁ¹ÒÁÊ¡ØÅ¢Í§ä¿Åì «Öè§µÑÇ perl installer ¨Ðá¡éãËéáÅéÇâ´Â»¡µÔ ÊÒÁÒöà¢Õ¹ºÃ÷ѴááẺ¹Õé

#!perl


ËÃ×ÍàÃÒÊÒÁÒöà¢Õ¹â»Ãá¡ÃÁẺÃǺÃÑ´ä´é¨Ò¡ command line Ẻ¹Õé

perl -pe 'tr/A-Z/a-z/' < input_file > output_file

0

#5 User is offline   TongPha 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 49
  • Joined: 20-November 05

  Posted 21 November 2005 - 05:58 PM

ª¹Ô´¢Í§¢éÍÁÙÅ ( Data Types )
Perl ÁÕª¹Ô´¢Í§¢éÍÁÙŴѧ¹Õé
1. Scalar : à¡çº¤èҢͧ¢éÍÁÙÅà´ÕèÂÇ (àªè¹ number, string, reference )
2. List ËÃ×Í Array : à¡çº¢éÍÁÙÅ Scalar ẺàÃÕ§ÅӴѺ
3. Hash or Associative Array : ¤ÅéÒ¡Ѻ Array áµèãªé string à»ç¹ index 㹡ÒÃà¢éÒ¶Ö§¢éÍÁÙÅ â´ÂàÃÕ¡ string ¹Ñé¹ÇèÒ Key áÅÐàÃÕ¡¢éÍÁÙÅ·Õè key ªÕé ÇèÒ Value

µÑÇá»Ã·Ø¡µÑǨж١¹Ó˹éÒ´éÇÂÊÑ­Åѡɳì¾ÔàÈÉ (sigil) «Ö觨к͡¶Ö§ª¹Ô´¢Í§¢éÍÁÙÅ áÅÐ µÑÇá»Ãª×èÍà´ÕÂǡѹáµè ¤¹ÅЪ¹Ô´ ¨ÐËÁÒ¶֧ µÑÇá»Ã ¤¹ÅеÑÇ

	$foo; # Scalar
	@foo; # Array
	%foo; # Hash


¤èÒµÑÇàÅ¢ ¨Ðà¢Õ¹àËÁ×͹¡ÑºÀÒÉÒÍ×è¹ string ¨Ð¤ÃèÍÁ´éÇ quote ẺµèÒ§æ

	$n = 100;
	$name = "peter";
	$color = 'red';


list ¢Í§¢éÍÁÙŨÐà¢Õ¹â´Â à¢Õ¹¢éÍÁÙÅáµèÅеÑÇ á¡¡Ñ¹´éÇ comma ÍÂÙèÀÒÂ㹠ǧàÅçº ( )

	@scores = ( 24, 46, 35, 18 );


à¹×èͧ¨Ò¡¢éÍÁÙŪ¹Ô´ Scalar à¡çºä´é·Ñé§ µÑÇàÅ¢ text ËÃ×Í reference àÃÒ¨Ö§ÊÒÁÒöÃÇÁ¢éÍÁÙŵèÒ§ª¹Ô´à¢éÒä»ã¹ list à´ÕÂǡѹä´é

	@mixed = (15, 3.1416, "tom", \$ref );


¢éÍÁÙÅáµèÅеÑǢͧ list ÊÒÁÒöà¢éÒ¶Ö§ä´éâ´Âãªé index ·Õèà»ç¹µÑÇàÅ¢ ÍÂÙèã¹ square brackets [ ]
¢éÍÁÙÅáµèÅеÑǢͧ hash ÊÒÁÒöà¢éÒ¶Ö§ä´éâ´Âãªé index ·Õèà»ç¹ key ÍÂÙèã¹ à¤Ã×èͧËÁÒ»ա¡Ò curly braces { }
à¤Ã×èͧËÁÒ $ ·Õè¹Ó˹éÒ ºÍ¡ÇèÒàÃÒà¢éÒ¶Ö§¢éÍÁÙÅ·Õèà»ç¹ Scalar

	$scores[2]; # 3rd element of @scores
	$favorite{joe}; # a value in ÿ%favorite with key "joe"


¢¹Ò´¢Í§ array ÊÒÁÒöà¢éÒ¶Ö§ä´éâ´Â ÍèÒ¹¤èÒ (evaluating) array ã¹ scalar context

Quote

$size = @scores; # $size ¨Ðä´é¤èÒ 4


ËÃ×Í ´Ù last array index â´Âãªé $#arr
	$lastIndex = $#scores;


¿Ñ§¡ìªÑ¹·Õèãªé¡Ñº list â´Â੾ÒÐ

Quote

push (@arr, $var); # ãÊèµèÍ·éÒÂ
$var = pop (@arr); # ´Ö§µÑÇ·éÒÂÍÍ¡
$var = shift (@arr); # ´Ö§µÑÇááÍÍ¡
unshift (@arr); # ãÊèµÑÇáÃ¡ÊØ´
$arr1 = reverse (@arr); # reverse array
$arr1 = sort (@arr); # àÃÕ§¢éÍÁÙÅã¹ array


hash ÊÒÁÒö¡Ó˹´¤èÒàÃÔèÁµé¹ä´éâ´Â list ¢Í§¤Ùè¢Í§ key/value

	%favorite = ( joe => 'red',
 ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿsam => 'blue' );


¿Ñ§¡ìªÑ¹·Õèãªé¡Ñº hash â´Â੾ÒÐ

Quote

@keys = keys %favorite; # ´Ö§à©¾ÒТéÍÁÙÅ·Õèà»ç¹ key
@values = values %favorite; # ´Ö§à©¾ÒТéÍÁÙÅ·Õèà»ç¹ value

This post has been edited by TongPha: 25 November 2005 - 06:04 PM

0

#6 User is offline   work4best 

  • Topgun
  • View blog
  • Group: Topgun
  • Posts: 618
  • Joined: 04-May 04

Posted 21 November 2005 - 07:55 PM

ÀÒÉÒ Perl ÊÓËÃѺ¼ÁàËÁ×͹ÂÒ¢Á ·ÕèÃÙéÇèÒÊÃþ¤Ø³´Õ áµèäÁèä´éàÍÒ¨ÃÔ§«Ð·Õ

´ÕÁÒ¡àŤÃѺ ¢ÍµÔ´µÒÁÍèÒ¹¹Ð¤ÃѺ
0

#7 User is offline   ¹Ò¢éÒÇâ¾´ËÇÒ¹ 

  • Committee
  • View blog
  • Group: Committee
  • Posts: 7075
  • Joined: 01-April 03

Posted 22 November 2005 - 12:41 AM

¢Íº¤Ø³·Õèà¢Õ¹á¹Ð¹ÓãËéàÃÒÃÙé¨Ñ¡ÀÒÉÒ¹Õé¤ÃѺ ÃÙéÊÖ¡ÀÒÉÒ¹ÕéÁդس webhot à¢Õ¹á¹Ð¹Ó´éÇ ¹èÒ¨ÐÁÕ¤¹à¢Õ¹Ẻ¹ÕéÊÓËÃѺËÅÒÂæÀÒÉÒ ÍÂèÒ§ groovy, ruby, python ·èҨдÕ
0

#8 User is offline   work4best 

  • Topgun
  • View blog
  • Group: Topgun
  • Posts: 618
  • Joined: 04-May 04

Posted 22 November 2005 - 03:27 PM

work4best, on Nov 21 2005, 07:55 PM, said:

ÀÒÉÒ Perl ÊÓËÃѺ¼ÁàËÁ×͹ÂÒ¢Á ·ÕèÃÙéÇèÒÊÃþ¤Ø³´Õ áµèäÁèä´éàÍÒ¨ÃÔ§«Ð·Õ
<{POST_SNAPBACK}>


à˵ؼÅËÅÑ¡¡ç¤×Í
TMTOWTDI
0

#9 User is offline   TongPha 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 49
  • Joined: 20-November 05

  Posted 22 November 2005 - 04:00 PM

TMTOWTDI
=>
There's More Than One Way To Do It

B)
0

#10 User is offline   TongPha 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 49
  • Joined: 20-November 05

  Posted 22 November 2005 - 04:35 PM

Perl Control Structure

perl ÁÕÅѡɳРcontrol structure à»ç¹ block â´Â·Õè à§×èÍ¹ä¢ (conditions) ¨ÐÍÂÙè㹠ǧàÅçº () áÅÐ statements ¨ÐÍÂÙè㹠ǧàÅ纻ա¡Ò { }

Quote

label while ( cond ) { ... }
label while ( cond ) { ... } continue { ... }
label for ( init-expr ; cond-expr ; incr-expr ) { ... }
label foreach var ( list ) { ... }
label foreach var ( list ) { ... } continue { ... }
if ( cond ) { ... }
if ( cond ) { ... } else { ... }
if ( cond ) { ... } elsif ( cond ) { ... } else { ... }
*label à»ç¹ optional ¹Ð¤ÃѺ

statement à´ÕèÂÇæ ¨ÐÊÒÁÒöãÊèà§Õè͹ä¢áººÊÑé¹ä´é

Quote

statement if cond ;
statement unless cond ;
statement while cond ;
statement until cond ;
statement foreach list ;

0

#11 User is offline   TongPha 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 49
  • Joined: 20-November 05

  Posted 22 November 2005 - 05:17 PM

perl ÁÕ operator ·Õè·Ó§Ò¹à»ç¹ loop ¡Ñº¢éÍÁÙÅẺ list â´Â੾ÒФ×Í map áÅÐ grep

Quote

results = map { ... } list;
results = grep { ... } list;


map à»ç¹àËÁ×͹ẺÂèͧ͢ foreach ¤×ͨÐÃѹâ¤é´¡Ñº¢éÍÁÙÅáµèÅеÑÇ ·ÕèÍÂÙèã¹ list â´ÂàÃÒÊÒÁÒöà¢éÒ¶Ö§¢éÍÁÙżèÒ¹µÑÇá»Ã $_ àÁ×èÍÃѹ¢éÍÁÙŨ¹¤Ãº ¨Ð return list ãËÁèãËé

my @numbers = ( 1, 2, 3, 4 );
my @results = map { $_*2 } @numbers;
print @results; # print 2468


¨ÐàËÁ×͹¡Ñº
my @numbers = ( 1, 2, 3, 4 );
my @results = ();
foreach $num (@numbers) {
    $num *= 2;
    push @results, $num;
}
print @results; # print 2468


grep ã¹ perl ·Ó§Ò¹àËÁ×͹¤ÓÊÑè§ grep ã¹ UNIX ¤×ͨÐàÅ×Í¡àÍÒ¢éÍÁÙÅ·Õè match ¡Ñºà§×è͹䢷Õè¡Ó˹´

my @names = ("tom", "jim", "henry", "marry");
my @resutls = grep { "m" } @names;
print "@results"; print tom jim marry

This post has been edited by TongPha: 22 November 2005 - 05:20 PM

0

#12 User is offline   TongPha 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 49
  • Joined: 20-November 05

Posted 22 November 2005 - 05:58 PM

Subroutines
Subroutine ÊÒÁÒöà¢Õ¹¢Öé¹ä´éâ´Âãªé key word sub áÅÐàÃÕ¡ãªéâ´Â¾ÔÁ¾ìª×èÍ subroutine ·Õèµéͧ¡Òà àÃÒÊÒÁÒöÊÃéÒ§ subroutine ¢Öé¹·Õèã´¡çä´éã¹â»Ãá¡ÃÁ áµè¶éÒàÃÒàÃÕ¡ãªé subroutine ¡è͹·Õè¨Ð»ÃСÒÈ ¨ÐµéͧãÊèǧàÅçº ( ) µèÍ·éÒÂ

foo();
sub foo {
.....
}
foo;
foo();
&foo
&foo();;

àÃÒÊÒÁÒöÊè§ arguments ãËé subroutine ä´éâ´Â µèÍ·éÒª×èÍ subroutine ´éÇ µÑÇá»Ã·ÕèàÃÒ¨ÐÊè§à¢éÒä»

 foo $a, @b, %c;
foo($a, $b, @c);
&foo;
&foo $a, $b, $c

*parameter ·ÕèÊè§à¢éÒÁÒãËé subroutine ¨ÐäÁèÁÕ¡ÒáÓ˹´ª¹Ô´ áÅÐ㹡ÒÃàÃÕ¡ãªéáµèÅФÃÑé§ äÁè¨Óà»ç¹µéͧÊè§ parameter ¨Ó¹Ç¹·Õèà·èҡѹ â´Â·Õè list ¨Ð¶Ù¡ á¡ÍÍ¡à»ç¹ scalar áÅÐ hash ¨Ð¶Ù¡á¡ÍÍ¡à»ç¹ ¤Ùè¢Í§ key/value áÅÐÃÇÁàÍÒ scalar ·Ø¡Íѹà¢éÒ´éÇ¡ѹà»ç¹ list Êè§ãËé subroutine â´Â·Õè¨Ðà¡çºäÇéã¹ special variable @_

Quote

sub mySub {
ÿ ÿ foreach ( @_ ) {
ÿ ÿ ÿ ÿ print ">>>>$_\n";
ÿ ÿ }
}

my @arr = ( 5, 10, 15 );
my %hash = ( 1 => 100, 2 => 200, 3 => 300);
mySub(@arr, %hash);

¨Ðä´é output ÅѡɳйÕé

Quote

>>>>>5
>>>>>10
>>>>>15
>>>>>1
>>>>>100
>>>>>3
>>>>>300
>>>>>2
>>>>>200

* ·Õè 3, 300 ÍÍ¡ÁÒ¡è͹ 2, 200 à¾ÃÒÐ hash äÁèä´éàÃÕ§¢éÍÁÙÅẺ list

¶éÒàÃÒÃÙéÇèÒ ÁÕ argumanet ¡ÕèµÑÇ ÊÒÁÒö´Ö§ÍÍ¡ÁÒ·Ñé§ËÁ´·Õà´ÕÂÇä´éàÅ àªè¹ 2 µÑÇ
sub mySub() {
    my ($x, $y) = @_;
    ....
}


¡Òà return ¤èÒ¨Ò¡ subroutine
»¡µÔ ¨Ðãªé keyword return 㹡ÒÃÊ觤èÒ¡ÅѺ

Quote

sub mySub() {
ÿ ÿ if ( .... ) {
ÿ ÿ ÿ ÿ return 0;
ÿ ÿ } else {
ÿ ÿ ÿ ÿ return 1;
ÿ ÿ }
}


㹡óշÕè subroutine äÁèä´éÁÕ¡Òà return ¤èÒ â´Â keyword
*perl ¨ÐÊ觤èÒ·Õèä´é¨Ò¡¡Òà evaluate statement ÊØ´·éÒ à»ç¹¤èÒ return ¨Ò¡ subroutine

sub mySub() {
 ÿ ÿlocal @params = @_;
 ÿ ÿlocal $a;

 ÿ ÿif ( $#params > 0 ) {
 ÿ ÿ ÿ ÿtime(); # case 1
 ÿ ÿ} else {
 ÿ ÿ ÿ ÿ"xx/xx/xx"; # case 2
 ÿ ÿ}
}

$x = mySub();

case 1 : ¤èÒ $x ¨Ðà»ç¹¤èÒ·Õèä´é¨Ò¡¡ÒÃàÃÕ¡¿Ñ§¡ìªÑ¹ time
case 2 : ¤èÒ $x ¨Ðà»ç¹¤èÒ string "xx/xx/xx"

This post has been edited by TongPha: 25 November 2005 - 06:11 PM

0

#13 User is offline   TongPha 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 49
  • Joined: 20-November 05

Posted 23 November 2005 - 06:17 PM

¡ÒÃÊÃéÒ§ anonymous subroutine
perl ÊÒÁÒöÊÃéÒ§ anonymous subroutine (unnamed) ä´éàªè¹à´ÕÂǡѺ Java â´Â ¡Ó˹´¤èÒãËéµÑÇá»Ãá·¹

Quote

$subref = sub { .... };

&$subref;

¡ÒÃà¢Õ¹ÅѡɳйÕé ¨Ðà»ç¹¡ÒÃ·Ó subroutine à»ç¹ private ¤×Í code Êèǹ·Õèà¢éÒ¶Ö§ $subref ä´éà·èÒ¹Ñé¹ ·Õè¨ÐàÃÕ¡ãªé subroutine ¹Õéä´é

*¡ÒÃàÃÕ¡ãªé anonymouse subroutine µéͧãªéà¤Ã×èͧËÁÒ & ¹Ó˹éÒ·Ø¡¤ÃÑé§

This post has been edited by TongPha: 23 November 2005 - 06:24 PM

0

#14 User is offline   TongPha 

  • Newbie
  • Pip
  • Group: Members
  • Posts: 49
  • Joined: 20-November 05

Posted 25 November 2005 - 06:48 PM

Perl Regular Expressions
Perl ÁÕ syntax ¾ÔàÈÉÊÓËÃѺà¢Õ¹ Regular Expression (¢ÍàÃÕ¡ÊÑ鹿ÇèÒ RegEx) áÅÐã¹µÑÇ interpreter ÁÕ engine ¾ÔàÈÉÊÓËÃѺ·Ó RegEx matching â´Âãªé backtracking algorithm «Ö觹͡¨Ò¡¨Ð·Ó simple matching ä´éáÅéÇ ÂѧÊÒÁÒö·Ó string capture áÅÐ substitution ä´é

Perl RegEx syntax àÃÔèÁµé¹ÁÒ¨Ò¡ Unix Version 8 regular expression áÅСçä´éÁÕ¡ÒÃà¾ÔèÁ¤ÇÒÁÊÒÁÒöµèÒ§æà¢éÒä»

m// (match) ãªé㹡ÒÃà»ÃÕºà·Õº string ( m ¨ÐäÁèãÊè¡çä´é ) àªè¹
$x =~ m/abc/;

¨Ðä´é¤èÒ true ¶éÒ $x match ¡Ñº RegEx abc
àÃÒÊÒÁÒöà¡çº string ·Õè match ä´éâ´ÂãÊèǧàÅçº ( ) ¤ÃèÍÁÊèǹ·Õèµéͧ¡Òà â´Â¨Ð return ¤èÒẺ list context àªè¹

Quote

$x = "scratch";
($matched) = $x =~ /r(.)t/;
print $matched; # print "a"


s/// (substitute) ·Ó¡ÒÃËÒ áÅÐ á·¹·Õè string
$x = s/abc/123/; # replace abc with 123


àÃÒÊÒÁÒöãÊè modifiers 㹡ÒÃ·Ó pattern matching ãËé¡Ñº RegEx engine ä´é â´ÂÃкصèÍ·éÒ expression
$x =~ m/abc/i; # case-insensitive
$x =~ s/abc/123/g; # global serch&replace


ÊÓËÃѺ RegEx ·Õè«Ñº«é͹ perl ÁÕ /x modifier ãËéãªé «Öè§·ÓãËéàÃÒÊÒÁÒöãÊè comment áÅÐ white space ã¹ RegEx ä´é
$x =~ m/a	# match 'a'
         . # match any character
         c # match 'c'
         /x;

This post has been edited by TongPha: 26 November 2005 - 01:19 AM

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users