perl小函数
#求一个数的补码,第一个参数表示位数,第二个参数表示需要求补码的数
sub complement {
if(@_ != 2) {
exit(0) || die("function complement's parameter error\n");
}
my $bit_cnt = $_[0];
my $temp0 = $_[1];
my $temp1 = 0;
my $result;
my $i;
if($temp0 < 0) {
$temp0 = $temp0 * (-1);
for($i = 0; $i < $bit_cnt; $i++) {
$temp1 = $temp1 + (0x1 << $i);
}
$result = $temp1 - $temp0 + 0x1;
return $result;
}
else {
$result = $temp0;
return $result;
}
};
#合并任意多个的文件
sub merge_file{
my $in_file;
my $out_file = "merge_file.out";
my $count;
my $buffer;
open(OUTFILE_HANDLE, ">", $out_file) || die("cannot open file: $out_file, error information: $!\n");
close(OUTFILE_HANDLE);
foreach $in_file (@_) {
open(INFILE_HANDLE, $in_file) || die("cannot open file: $in_file, error information: $!\n");
binmode(INFILE_HANDLE);
open(OUTFILE_HANDLE, ">>", $out_file) || die("cannot open file: $out_file, error information: $!\n");
binmode(OUTFILE_HANDLE);
while(1) {
$count = sysread INFILE_HANDLE, $buffer, 1;
if($count == 0) {
#syswrite OUTFILE_HANDLE, chr(0xa), 1;
last;
}
else {
syswrite OUTFILE_HANDLE, $buffer, 1;
}
}
close(INFILE_HANDLE);
close(OUTFILE_HANDLE);
}
};
sub complement {
if(@_ != 2) {
exit(0) || die("function complement's parameter error\n");
}
my $bit_cnt = $_[0];
my $temp0 = $_[1];
my $temp1 = 0;
my $result;
my $i;
if($temp0 < 0) {
$temp0 = $temp0 * (-1);
for($i = 0; $i < $bit_cnt; $i++) {
$temp1 = $temp1 + (0x1 << $i);
}
$result = $temp1 - $temp0 + 0x1;
return $result;
}
else {
$result = $temp0;
return $result;
}
};
#合并任意多个的文件
sub merge_file{
my $in_file;
my $out_file = "merge_file.out";
my $count;
my $buffer;
open(OUTFILE_HANDLE, ">", $out_file) || die("cannot open file: $out_file, error information: $!\n");
close(OUTFILE_HANDLE);
foreach $in_file (@_) {
open(INFILE_HANDLE, $in_file) || die("cannot open file: $in_file, error information: $!\n");
binmode(INFILE_HANDLE);
open(OUTFILE_HANDLE, ">>", $out_file) || die("cannot open file: $out_file, error information: $!\n");
binmode(OUTFILE_HANDLE);
while(1) {
$count = sysread INFILE_HANDLE, $buffer, 1;
if($count == 0) {
#syswrite OUTFILE_HANDLE, chr(0xa), 1;
last;
}
else {
syswrite OUTFILE_HANDLE, $buffer, 1;
}
}
close(INFILE_HANDLE);
close(OUTFILE_HANDLE);
}
};