Perl脚本 杂记

Perl脚本 杂记

[@more@]

Perl脚本:

Perl chdir函数2010年10月29日 星期五 下午 16:24用法:

chdir EXPR

chdir介绍:

如果可能,chdir函数改变当前进程的工作目录到EXPR。如果省略EXPR,即返回调用者的根目录。成功时返回真,否则返回假。

例子:

假设根目录/home/zhenglc:

#!/usr/bin/perl

chdir "/usr/home";

# Now you are in /usr/home dir.

chdir;

# Now you are in home directory /home/zhenglc又或者是用perl的单行命令:

perl -e 'chdir; print `pwd`'

#输出:/home/zhenglc

perl -e 'chdir "/home/zhenglc/temp/"; print `pwd`'

#输出:/home/zhenglc/temp

##pwdshell命令。返回当前的路径。chdir函数相当于Linux的命令cd

#!/usr/bin/perl

use strict;

use warnings;

my $dir_out = "/data4/nba_show_traffic/";

system "mkdir","-p",$dir_out;

my $dir = "/data4/nba_sw_int_traffic/";

chdir $dir || die "Can't change dir $dir $!n";

my @files = glob ("*"); #数组变量将保存该目录下所有文件名,除了以点号开头的隐藏文件.

foreach my $file (@files)

{

$file =~ m/(d{1,3}.d{1,3}.d{1,3}.d{1,3})/;#匹配任意ip地址,m是匹配,match,这个地方没有做容错,编程者知道肯定是能匹配上的。

print "$1n";#打印出匹配上的那个ip地址

my $f_out = $dir_out.$file;

open FH,"

open FH_OUT,">",$f_out || die "Can't open $f_out $!n";

while()

{

if(/GigabitEthernet0/1/)

{

print FH_OUT $_;

}

}

close FH_OUT;

close FH;

}

Perlindex的用法,

Introduction

The index() function is used to determine the position of a letter or a substring in a string. For example, in the word "frog" the letter "f" is in position 0, the "r" in position 1, the "o" in 2 and the "g" in 3. The substring "ro" is in position 1. Depending on what you are trying to achieve, the index() function may be faster or more easy to understand than using a regular expression or the split() function.

Example 1a. Where in a string is a certain letter?

Let's say you are trying to determine if a word has a particular letter in it. Let's look for the letter "l" in the string "perlmeme.org".

#!/usr/bin/perl

use strict;

use warnings;

my $string = 'perlmeme.org';

my $char = 'l';

my $result = index($string, $char);

print "Result: $resultn";

This program gives you:

Result: 3

Example 1b. The string doesn't contain the letter?

If the string doesn't contain the letter, index() will return a -1. For example, we can look for the letter "L" in the string "perlmeme.org":

#!/usr/bin/perl

use strict;

use warnings;

my $string = 'perlmeme.org';

my $char = 'L';

my $result = index($string, $char);

print "Result: $resultn";

The program outputs:

Result: -1

Example 1c. The string contains more than one of the letter?

If the letter we're searching for appears more than once in the string, index() return the index of the first occurrence of the letter.

#!/usr/bin/perl

use strict;

use warnings;

my $string = 'perlmeme.org';

my $char = 'e';

my $result = index($string, $char);

print "Result: $resultn";

This program gives you:

Result: 1

Example 2. Looking for a substring

Looking for a substring (rather than a single character) works in exactly the same way as looking for a single character:

#!/usr/bin/perl

use strict;

use warnings;

my $string = 'perlmeme.org';

my $substr = 'me';

my $result = index($string, $substr);

print "Result: $resultn";

This program gives you:

Result: 4

Example 3a. What if I don't want the first occurrence?

The index() function let's you specify an offset. This tells index() where to start looking in the string. In our example, we found the first occurrence of the letter 'e' at position 1. Let's try to find the second:

#!/usr/bin/perl

use strict;

use warnings;

my $string = 'perlmeme.org';

my $char = 'e';

# The first 'e' was at position 1, so let's start

# looking again at position 2

my $offset = 2;

my $result = index($string, $char, $offset);

print "Result: $resultn";

The program outputs:

Result: 5

Example 3b. How to find every occurrence

To find (and do something with) every occurrence of a character in a string, you could use index() in a loop, incrementing the offset each time:

#!/usr/bin/perl

use strict;

use warnings;

my $string = 'perlmeme.org';

my $char = 'e';

my $offset = 0;

my $result = index($string, $char, $offset);

while ($result != -1) {

print "Found $char at $resultn";

$offset = $result + 1;

$result = index($string, $char, $offset);

}

When we run this program, we get the following output:

Found e at 1

Found e at 5

Found e at 7

Example 4. How to find the last occurrence

Instead of looping through every occurrence of a letter in a string to find the last one, you can use the rindex() function. This works exactly the same as index() but it starts at the end of the string. The index value returned is string from the start of the string though.

#!/usr/bin/perl

use strict;

use warnings;

my $string = 'perlmeme.org';

my $char = 'e';

my $result = rindex($string, $char);

print "Result: $resultn";

This would produce:

Result: 7

Perl脚本一小例子

echo "aaTbbT"|perl -ne "for $i (split /T/){print $i;}"#这里将for改成foreach也可以,split/T/可以改成split(“:”)split(“:”,$_)

结果:aabb

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23168012/viewspace-1045839/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23168012/viewspace-1045839/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值