Your original regex checked only for version 10 and the sub-versions of Mac OS X Server or non-servers. If that was intentional, then you could do something like this -
Code:
$
$ perl -le 'BEGIN {$output = "blah Mac OS X Server 10.7.5 blah"} $OSRELEASE = $1 if $output =~ /((Mac )?OS X (Server )?10\.[\d.]+)/; print $OSRELEASE'
Mac OS X Server 10.7.5
$
$
$ perl -le 'BEGIN {$output = "blah Mac OS X 10.7.5 blah"} $OSRELEASE = $1 if $output =~ /((Mac )?OS X (Server )?10\.[\d.]+)/; print $OSRELEASE'
Mac OS X 10.7.5
$
$
$ perl -le 'BEGIN {$output = "blah OS X Server 10.8.2 blah"} $OSRELEASE = $1 if $output =~ /((Mac )?OS X (Server )?10\.[\d.]+)/; print $OSRELEASE'
OS X Server 10.8.2
$
$
$ perl -le 'BEGIN {$output = "blah OS X 10.8.2 blah"} $OSRELEASE = $1 if $output =~ /((Mac )?OS X (Server )?10\.[\d.]+)/; print $OSRELEASE'
OS X 10.8.2
$
$
$ # Won't work with versions less than 10
$
$ perl -le 'BEGIN {$output = "blah Mac OS X 9.7.5 blah"} $OSRELEASE = $1 if $output =~ /((Mac )?OS X (Server )?10\.[\d.]+)/; print $OSRELEASE'
$
$ perl -le 'BEGIN {$output = "blah Mac OS X Server 9.7.5 blah"} $OSRELEASE = $1 if $output =~ /((Mac )?OS X (Server )?10\.[\d.]+)/; print $OSRELEASE'
$
$
If you had wanted to test for any version (not just 10), then something like this could be used -
Code:
$
$
$ perl -le 'BEGIN {$output = "blah Mac OS X Server 10.7.5 blah"} $OSRELEASE = $1 if $output =~ /((Mac )?OS X (Server )?[\d.]+)/; print $OSRELEASE'
Mac OS X Server 10.7.5
$
$ perl -le 'BEGIN {$output = "blah Mac OS X 10.7.5 blah"} $OSRELEASE = $1 if $output =~ /((Mac )?OS X (Server )?[\d.]+)/; print $OSRELEASE'
Mac OS X 10.7.5
$
$ perl -le 'BEGIN {$output = "blah OS X Server 10.8.2 blah"} $OSRELEASE = $1 if $output =~ /((Mac )?OS X (Server )?[\d.]+)/; print $OSRELEASE'
OS X Server 10.8.2
$
$
$ perl -le 'BEGIN {$output = "blah OS X 10.8.2 blah"} $OSRELEASE = $1 if $output =~ /((Mac )?OS X (Server )?[\d.]+)/; print $OSRELEASE'
OS X 10.8.2
$
$
$ perl -le 'BEGIN {$output = "blah Mac OS X Server 9.7.5 blah"} $OSRELEASE = $1 if $output =~ /((Mac )?OS X (Server )?[\d.]+)/; print $OSRELEASE'
Mac OS X Server 9.7.5
$
$
$ perl -le 'BEGIN {$output = "blah Mac OS X 9.7.5 blah"} $OSRELEASE = $1 if $output =~ /((Mac )?OS X (Server )?[\d.]+)/; print $OSRELEASE'
Mac OS X 9.7.5
$
$
For a programming exercise, I am mean to design a Perl script that detects double letters in a text file.
I tried the following expressions
# Check for any double letter within the alphabet
/+/
# Check for any repetition of an alphanumeric character
/\w+/
Im aware that the... (8 Replies)
Hi,
Can anyone help me to find regular expression for the following in Perl?
"The string can only contain lower case letters (a-z) and no more than one of any letter."
For example: "table" is accepted, whether "dude" is not.
I have coded like this:
$str = "table";
if ($str =~ m/\b()\b/) {... (4 Replies)
I have got numbers like
l255677
l376039
l188144
l340482
l440700
l254113
to match the numbers starting with '13' what would be the regex
=~/13(.*)/ =======>This is not working ....
But for user123,user657
regex =~/user(.*)/ ========>works
Thanks for help..!! (7 Replies)
I am having trouble parsing rpm filenames in a shell script.. I found a snippet of perl code that will perform the task but I really don't have time to rewrite the entire script in perl. I cannot for the life of me convert this code into something sed-friendly:
if ($rpm =~ /(*)-(*)-(*)\.(.*)/)... (1 Reply)
Hi,
I get the following when I cat a file *.log
xxxxx
=====
dasdas gwdgsg fdsagfsag agsdfag
=====
random data
=====
My output should look like :
If the random data after the 2nd ==== is null then OK should be printed else
the random data should be printed.
How do I go about this... (5 Replies)
HI,
I'm new to perl and need simple regex for reading a file using my perl script.
The text file reads as -
filename=/pot/uio/current/myremificates.txt
certificates=/pot/uio/current/userdir/conf/user/gamma/settings/security/... (3 Replies)
Hello,
I'm trying to get a quick help on regex since i'm not a regular programmer.
Below is the line i'm trying to apply my regex to..i want to use the regex in a for loop and this line will keep on changing.
subject=... (4 Replies)
Could anyone please make me understand how the ?= works below ..
After executing this I am getting the same output.
$string="I love chocolate.";
$string =~ s/chocolate(?= ice)/vanilla/;
print "$string\n"; (2 Replies)
I am not a big expert in regex and have just little understanding of that language.
Could you help me to understand the regular Perl expression:
^(?!if\b|else\b|while\b|)(?:+?\s+){1,6}(+\s*)\(*\) *?(?:^*;?+){0,10}\{
------
This is regex to select functions from a C/C++ source and defined in... (2 Replies)
Experts -
I found a script on one of the servers that I work on and I need help understanding
one of the lines.
I know what the script does, but I'm having a hard time understanding the grouping.
Can someone help me with this?
Here's the script...
#!/usr/bin/perl
use strict;
use... (2 Replies)
Discussion started by: timj123
2 Replies
LEARN ABOUT OSX
mac::aete::app
Mac::AETE::App(3) User Contributed Perl Documentation Mac::AETE::App(3)NAME
Mac::AETE::App - reads the Macintosh Apple event dictionary from an application.
SYNOPSIS
use Mac::AETE::App;
use Mac::AETE::Format::Dictionary;
$app = App->new("My Application");
$formatter = Dictionary->new;
$app->set_format($formatter);
$app->read;
$app->write;
DESCRIPTION
The App module simplifies reading the Apple event dictionary from an application. It will launch the application if necessary to obtain
the dictionary.
Methods
new Example: ($name is the name of the application.)
use Mac::AETE::App;
use Mac::AETE::Format::Dictionary;
$app = App->new($aete_handle, $name);
read (Inherited from Mac::AETE::Parser.)
Reads the data contained in the AETE resource or handle. Example:
$app->read;
set_format
(Inherited from Mac::AETE::Parser.)
Sets the output formatter used during by the 'write' subroutine. Example:
$formatter = Dictionary->new;
$app->set_format($formatter);
copy (Inherited from Mac::AETE::Parser.)
Copies all suites from one Parser object into another. Example:
$aete2 = Parser->new($aete_handle2, $another_name);
$app->copy($aete2);
copies the suites from $aete2 into $aete.
merge (Inherited from Mac::AETE::Parser.)
Merges suites from one Parser object into another. Only the suites that exist in both objects will be replaced. Example:
$aete3 = Parser->new($aete_handle2, $another_name);
$app->merge($aete3);
write (Inherited from Mac::AETE::Parser.)
Prints the contents of the AETE or AEUT resource using the current formatter.
$app->write;
INHERITANCE
Inherits from Mac::AETE::Parser.
AUTHOR
David Schooley <dcschooley@mediaone.net>
perl v5.10.0 2005-05-16 Mac::AETE::App(3)