Posts

Showing posts with the label Perl

examples of pack function in Perl

$foo = pack("WWWW",65,66,67,68); # foo eq "ABCD" $foo = pack("W4",65,66,67,68); # same thing $foo = pack("W4",0x24b6,0x24b7,0x24b8,0x24b9); # same thing with Unicode circled letters. $foo = pack("U4",0x24b6,0x24b7,0x24b8,0x24b9); # same thing with Unicode circled letters. You don't get the UTF-8 # bytes because the U at the start of the format caused a switch to # U0-mode, so the UTF-8 bytes get joined into characters $foo = pack("C0U4",0x24b6,0x24b7,0x24b8,0x24b9); # foo eq "\xe2\x92\xb6\xe2\x92\xb7\xe2\x92\xb8\xe2\x92\xb9" # This is the UTF-8 encoding of the string in the previous example $foo = pack("ccxxcc",65,66,67,68); # foo eq "AB\0\0CD" # NOTE: The examples above featuring "W" and "c" are true # only on ASCII and ASCII-derived systems such as ISO Latin 1 # and UTF-8. On EBCDIC systems, the first example would be # $foo = pack("WWWW",193...

tool to create regular expression for you

http://www.txt2re.com/ It's a online tool, you follow the three steps to create a regular expression easily

怎么调试perl程序(1)

Usage: C:\Perl\bin\perl.exe [switches] [--] [programfile] [arguments]   -0[octal]        specify record separator (\0, if no argument)   -a               autosplit mode with -n or -p (splits $_ into @F)   -C               enable native wide character system interfaces   -c               check syntax only (runs BEGIN and CHECK blocks)   -d[:debugger]    run program under debugger   -D[number/list] set debugging flags (argument is a bit mask or alphabets)   -e 'command'     one line of program (several -e's allowed, omit programfile)   -F/pattern/      split() pattern for -a switch (//'s are optional)   -i[extension]    edit <> files in place (makes backup if exte...

怎么调试perl程序(2)

什么是调试程序 P e r l 调试程序是个 P e r l 解释程序的内置特性。它使你能够取出任何一个 P e r l 程序,然后逐个语句运行该程序。在运行过程中,你可以查看各个变量,修改这些变量,中断程序的运行,或者从头开始运行该程序,设置断点,输出你的函数调用堆栈,修改变量值等等。任何调试器不能识别的命令都会当作正在被调试的包里面的 Perl 代码直接执行(用 eval )。(调试器使用 DB 包存储自己的状态信息,以避免破坏你的程序的状态。)这个功能非常好用,以至于有时候人们经常使用调试器来交互地测试 Perl 的构造。这时候,它不在乎你让 Perl 调试什么程序。 从你的程序角度来看,它与普通程序并无区别。输入仍然来自键盘,输出仍然送往屏幕。程序并不知道何时停止运行,何时它正在运行。实际上,你可以观察程序的运行情况,根本不必中断程序的运行。

怎么调试perl程序(3)

启动调试程序 若要启动 P e r l 调试程序,必须打开操作系统的命令提示符。如果你是 D O S 和 Wi n d o w s 用户,那么要打开 M S - D O S 的标准提示符 C : \ 。如果是 U N I X 用户,这个提示符应该是你登录时显示的提示符(通常是%或$)。对于运行 P e r l 的 M a c i n t o s h 用户来说,只需从 S c r i p t 菜单中选定 D e b u g g e r 。这时就会为你打开带有提示符的 D e b u g g e r 窗口。 若要在提示符处启动调试程序(本例中使用 D O S 提示符),请键入下面这行命令: > perl -d XPath.pl stocks.xml P e r l 的 - d 开关可使 P e r l 以调试方式启动运行。命令行上也指明了被调试的程序。然后显示关于版本信息的某些消息,如下所示: Loading DB routines from perl5db.pl version 1.22 Editor support available.   Enter h or `h h' for help, or `perldoc perldebug' for more help.   main::(XPath.pl:5):      my $filename = shift;   DB<1> 该调试程序首先显示版本号( 1 . 0 4 0 1 ,你的版本号可能不一样)和 help ( 帮助 ) 提示。接着显示该程序的第一行可执行代码。说明它们来自什么文件( XPath.pl ),以及它们是在文件的哪一行或哪几行上找到的(第 5 行)。 最后,你看到调试文件的提示符 D B < 1 > 。这里面的数字显示你执行了多少命令。一个类似 csh 的历史机制可以让你通过数字访问前面的命令。比如 17 将重复命令数为 17 的命令。尖括号的数目表示调试器的深度。比如,如果你已经在一个断点了,然后又打印一个函数调用的结果,而且那个函数里面也有一个断点,那么你就会看到多于一对尖括号。调试程序提示符后面的光标正等待你输入命令。 这时,你的 P e r l 程序实际上暂停在第一个指令 -my ...

怎么调试perl程序(4)

  1 步进和运行 调试器一行一行地运行你的程序。下面的命令让你控制什么时候跳过,什么时候停止。 1.1 单步s s EXPR 单步运行程序。也就是说,调试器将执行你的下一行程序,直到到达另外一个语句,必要时步进到子过程里。如果要执行的下一行涉及函数调用,那么调试器将在那个函数的第一行停止。如果使用的 EXPR 里包含一个函数调用,那么它也会单步运行。 1.2 单步n n EXPR n 命令执行子过程调用但不单步进入它们,直到抵达同层(或者更高层)的下一条语句的开头时停止。如果使用的 EXPR 里包含函数调用,那么会执行那些函数然后在每个语句前面停下来。 1.3 回车 如果你只是在调试器提示符上敲回车,那么重复执行前面一条n或者s命令。 1.4 .(点) .(点) 命令返回指向刚刚执行完的行的调试器内部指针,并且打印该行。 1.5 r r 这条命令延续到当前正在执行的子过程返回。如果设置了 PrintRet ? 选项,它显示返回值,这是缺省。 2             断点 2.1 设置断点 b b LINE b CONDITION b LINE CONDITION b SUBNAME b SUBNAME CONDITION b postpone SUBNAME b postpone SUBNAME CONDITION b compile SUBNAME b load FILENAME 1)         B 调试器命令 b 在 LINE 之前设置一个断点,告诉调试器在该点停止程序,这样你就可以检查一番。 如果省略了 LINE,则在将要执行的行上设置断点。如果声明了CONDITION,那么每次到达该语句的时候都会计算它:只有CONDITION为真的时候才会触发一个断点。你只能在一个开始一个执行语句的行上设置断点。请注意这里的条件不用 if: b 237    $x > 30 b 237    ++$count237 < 11 b 33    /pattern/i 2)    ...

Perl 操作xml

use strict; use XML::DOM; use XML::DOM::XPath; ######################## global variable #################################### print $XML::DOM::VERSION."\n"; my$na = ">"; my$rel = XML::DOM::isValidName($na); if($rel){ print "$rel\n"; } else{ print "$na invalid\n"; } ######################## Verify the xml file################################# my$xml_file = "t:/stocks.xml"; unless ((-e $xml_file)){ print "pls input a xml path and file name:\n"; $xml_file = <STDIN>; } if ($xml_file !~ /\.xml$/) { die "need a xml file\n"; } ######################## Initialize ######################################## my $parser = new XML::DOM::Parser; my $doc = $parser->parsefile ($xml_file); ############################ DOCUMENT ###################################### my$element = $doc->getDocumentElement(); #type: ELEMENT_NODE my @nodes = $doc->findnodes...

Perl 操作Excel

use strict; use strict 'subs'; use Win32::OLE qw(in); use Win32::OLE::Variant; $Win32::OLE::Warn = 3;         # die on errors... #############################initialize############################### my$ex; # use existing instance if Excel is already running eval {$ex = Win32::OLE->GetActiveObject('Excel.Application')}; die "Excel not installed" if $@; unless (defined $ex) {     $ex = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;})             or die "Oops, cannot start Excel"; } $ex->{Visible} = 1; # 当调用下面的函数时候,excel是否显示 ######################### workbook ################################# # get a new workbook #my$book = $ex->Workbooks->Add; # open a workbook my$book = $ex->Workbooks->Open("t:/test.xls"); ############################ sheets ################################## my$sheets = $book->Worksheets; ...

如何给你的perl环境安装包

不用手工下载拷贝的方法,很不错!以安装 wins32::api为例说明步骤如下:>xxx是在cmd中运行的命令 运行cmd 进入到PERL目录下的BIN子目录, >  ppm 进入ppm>模式后 > install WIN32-API 等待安装,成功后 > exit 退出ppm模式 安装过程完成了。  

用于c++的perl解析器---Greta的缺点

GRETA是Eric Niebler提供一个perl解析器         GRETA是Eric Niebler提供一个perl解析器。在 网上找找到出是歌颂GRETA 的,不过一般都是从效率的角度来看的。 我没有比较过这个sdk和其他sdk之间的执行效率,所以不能说什么。下面说说在使用GRETA过程中感觉不好的几个方面: pattern的定义。这个是我认为最不能接受的问题。在greta中,pattern串的定义要求太苛刻,柔韧性很不好,有一点错误就导致程序crash了。 substitute不能稳定地工作。 帮助。帮助只有简单的一个网页,少得可怜。几乎没有任何demo可以借鉴。 语法。由于这个SDK是用STL写的,所以如果你使用的是mfc的话,就会觉得使用起来不那么方便。