#!/usr/bin/perl
$a = 10;
print "a = $a\n";
print 'a = $a\n';
输出
a = 10
a = KaTeX parse error: Expected 'EOF', got '\n' at position 2: a\̲n̲ ̲3. perl中的变量用开头,数组从@开头;数组赋值给标量,返回数组元素个数
#!/usr/bin/perl
@ages = (25, 30, 40);#定义了一个3*1的数组,用$ages[i](i=0,1,2)来访问
@names = ("google", "runoob", "taobao");
print "\$ages[0] = $ages[0]\n";
print "\$ages[1] = $ages[1]\n";
print "\$ages[2] = $ages[2]\n";
print "\$names[0] = $names[0]\n";
print "\$names[1] = $names[1]\n";
print "\$names[2] = $names[2]\n";
双引号内在$前使用了转义字符\才能输出字符 $。
4. 函数:sub开头,函数参数在特殊数组@中,因此子程序第一个参数为 $[0], 第二个参数为 $_[1]
#!/usr/bin/perl
# 定义求平均值函数
sub Average{
$n = scalar(@_);#得到数组个数
$sum = 0;
foreach $item (@_){
$sum += $item;
}
$average = $sum / $n;
print '传入的参数为 : ',"@_\n"; #打印整个数组
print "第一个参数值为 : $_[0]\n"; #打印第一个参数
print "传入参数的平均值为 : $average\n"; #打印平均值
}
# 调用函数
Average(10, 20, 30);
=~表示相匹配,!~表示不匹配
perl处理完后会给匹配到的值存在三个特殊变量名:
m/要匹配的字符串/
s/被替换的字符串/要换成的字符串/
#把google替换成runoob
$string =~ s/google/runoob/;
tr/要被转化的字符串/转化的字符串/
#小写转化成大写
$string =~ tr/a-z/A-z/;
#把所有非数字字符替换为空格
$string =~ tr/\d/ /c;
#删除tab和空格
$string =~ tr/\t //d;
# 把数字间的其它字符替换为一个空格
$string =~ tr/0-9/ /cs
1.匹配IP地址:m/\d+\.\d+\.\d+\.\d+/
\d:匹配一个数字字符
\d+:匹配一次或多次数字字符。
\.:使用转义字符匹配'.'
2.匹配邮箱
m/^[0-9a-zA-Z.-_]+\@[0-9a-zA-Z]+(\.[0-9a-zA-Z]+)+$
^:匹配开头
$:匹配结尾,这两个保证了这是连续的一串字符
3.匹配温度m/^([-+]?[0-9]+)([CF])$/
?:匹配前面的子表达式0次或1次
+:匹配前面的子表达式一次或多次
^:开头
4.匹配带小数点的正则表达式
比如说匹配邮箱
#! usr/bin/perl
$string="abc123\@sjtu.edu.cn";
if( $string =~ m/^[0-9a-zA-Z.-_]+\@[0-9a-zA-Z]+(\.[0-9a-zA-Z]+)+$/){
print "It matched!\n";
}
else{
print "don't match!\n"
}
print "$string\n"
创建hash的方式
$data{'google'} = 'google.com';
$data{'runoob'} = 'runoob.com';
$data{'taobao'} = 'taobao.com';
或直接一句话
%data = ('google', 'google.com', 'runoob', 'runoob.com', 'taobao', 'taobao.com');
或
%data = ('google'=>'google.com', 'runoob'=>'runoob.com', 'taobao'=>'taobao.com');
#!/usr/bin/perl
%data = ('google', 'google.com', 'runoob', 'runoob.com', 'taobao', 'taobao.com');
print "\$data{'google'} = $data{'google'}\n";
print "\$data{'runoob'} = $data{'runoob'}\n";
print "\$data{'taobao'} = $data{'taobao'}\n";
@keys = keys %data;
$size = @keys;
print "1 - 哈希大小: $size\n";
@values = values %data;
$size = @values;
print "2 - 哈希大小: $size\n";
# 添加元素
$data{'facebook'} = 'facebook.com';
@keys = keys %data;
$size = @keys;
print "2 - 哈希大小: $size\n";
# 删除哈希中的元素
delete $data{'taobao'};
@keys = keys %data;
$size = @keys;
print "3 - 哈希大小: $size\n";
假设XML内容如下:
<opt>
<user login="grep" fullname="Gary R Epstein" />
<user login="stty" fullname="Simon T Tyson" >
<session pid="12345"/>
user>
<text>This is a test.text>
opt>
要这么写
#!/usr/bin/perl
use XML::Simple;
use Data::Dumper;
$xml = XMLin('sample.xml');
#print Dumper($xml);
@user=@{$xml->{'user'}};
#print Dumper(@user);
$len=@user;
#print "$len \n";
%zjm1=%{@user[0]};
print "$zjm1{'login'}\n";
print "$zjm1{'fullname'}\n";
echo "Please enter a score:"
read score
if [ -z "$score" ]
then
echo "you enter nothing. please enter a score"
read score
else
if [ "$score" -lt 0 -o "$score" -gt 100 ]
then
echo "the score should be 0~100"
read score
else
if [ "$score" -ge 90 ]
then
echo "the grade is a"
elif [ "$score" -ge 80 ]
then
echo "the grade is b"
fi
fi
fi
#! /bin/bash
i=1
while [[ "$i" -lt 10 ]]
do
let "square=i*i"
echo "$i*$i=$square"
let "i=i+1"
done
tclsh ./try1.tcl
#!/usr/bin/tclsh
#my first program in tcl
if 0 {
my first program in Tcl program
Its very simple
}
puts "Hello World! welcome to yiibai.com"
#!/usr/bin/tclsh
set myVariable {red green blue}
puts [lindex $myVariable 2]
set myVariable "red green blue"
puts [lindex $myVariable 1]
#!/usr/bin/tclsh
set a 100
set b 200
# check the boolean condition
if { $a == 100 } {
# if condition is true then check the following
if { $b == 200 } {
#if condition is true then print the following
puts "Value of a is 100 and b is 200"
}
}
puts "Exact value of a is : $a"
puts "Exact value of b is : $b"
#!/usr/bin/tclsh
# for loop execution
for { set a 10} {$a < 20} {incr a} {
puts "value of a: $a"
}
!/usr/bin/tclsh
set fp [open "input.txt" w+]
puts $fp "test\ntest"
close $fp
set fp [open "input.txt" r]
while { [gets $fp data] >= 0 } {
puts $data
}
close $fp
import logging
logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")
上面代码只在文件中输出,如果想在控制台上输出的话
console = logging.StreamHandler()
console.setLevel(logging.INFO)
logger.addHandler(console)
handler = logging.FileHandler(filename="test.log", encoding="utf-8")
可以控制输出中文