簡體   English   中英

我可以使用正則表達式在perl中輸入if語句嗎?

[英]Can I use a regex to enter an if statement in perl?

發生了什么事,我正在解析/ etc / passwd文件,以提取文件中每個人的用戶名和姓氏/名字。 我可以使用正則表達式進入我的if語句嗎? 這是我要匹配的一行示例:

$parameter = cvwalters:*:14608:140608:Chris V. Walters,N/A,N/A,N/A:/home/cvwalters:/bin/bash

if ($parameter =~ /(.+):(.+):(.+):(.+):(.+),(.+),(.+),(.+):(.+):(.+)/){
    my $uid =$1;
    my $fname = $5 =~ /^\W+/;
    my $lname = $5 =~ /\W+$/;
    push (@results, $uid, $fname, $lname);
}

perl是否將一個真正的布爾值返回到if語句,並允許其余的執行? 如果沒有,我該如何實現?

是的,在布爾上下文中,match運算符是布爾運算符。

但是請聽@squiguy的建議,使用split。

CPAN上甚至有一個passwd模塊。

http://search.cpan.org/dist/Unix-ConfigFile/PasswdFile.pm

所以這是一個更好的選擇,然后我接受了...。

$parameter = cvwalters:*:14608:140608:Chris V. Walters,N/A,N/A,N/A:/home/cvwalters:/bin/bash

my ($uid, $junk, $junk2, $junk3, $name, $junk4, $junk5) = split /:/, $parameter;

my $fname = $name =~ /^\w+/;
my $lname = $name =~ /\w+$/;

push (@results, $uid, $fname, $lname);

試試下面的代碼:

my $var = "cvwalters:*:14608:140608:Chris V. Walters,N/A,N/A,N/A:/home/cvwalters:/bin/bash";
my @arr = split /[:,]/, $var;
my $uid = $arr[0];
my ($fname) = $arr[4] =~ /^(\w+)/;
my ($lname) = $arr[4] =~ /(\w+)$/;
push(@results,$uid,$fname,$lname);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM