小编Jim*_* P.的帖子

如何在Perl中正确声明全局变量?

我试图理解变量范围并在Perl中正确声明变量,我很难过.

下面的代码基本上读取一个excel文件,解析它,然后将它吐出到一个新的excel文件中.

但是,我试图读取其中一个标题,如果标题与我的字符串匹配,我想记录该列号,并在稍后的代码中使用它.

我在./parser.pl第38行打印出"使用未初始化的值$ site_name_col".

第38行是"print $ site_name_col;"

我意识到这个print语句在最初初始化变量的{}之外,但它在代码的开头被声明为一个全局变量,那么是什么给出了?

#!/usr/bin/perl -w

use strict;
use warnings;
use vars qw($site_name_col);
use Spreadsheet::WriteExcel;
use Spreadsheet::ParseExcel;

my ($fname1) = @ARGV;

my $parser   = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse($fname1);

my $new_workbook = Spreadsheet::WriteExcel->new('formated_list.xls', $fname1);

if (!defined $workbook) {

    die $parser->error(), ".\n";
}

for my $worksheet ( $workbook->worksheets() ) {

    my ($wsheet_name) = $worksheet->get_name();
    my $new_worksheet = $new_workbook->add_worksheet($wsheet_name);  

    my ($row_min, $row_max) = $worksheet->row_range();
    my ($col_min, $col_max) = $worksheet->col_range();

    for my $row ($row_min .. $row_max) {

        for …
Run Code Online (Sandbox Code Playgroud)

perl

9
推荐指数
1
解决办法
3万
查看次数

如何使用Xml.Save强制或指定编码类型?

我有一个我使用PowerShell修改的XML配置文件,当我使用Xml.Save保存文件时,它会更改编码类型.

当我打开ORIGINAL文件时,我试图在Notepad ++中编辑,编码类型被列为"没有BOM的UTF-8".当我在Notepad ++中使用Xml.Save编辑打开文件时,编码类型被简单地列为"UTF-8".这会导致使用此文件的程序错误地说它无法解析为配置属性.

如果我在Notepad ++中打开EDITED文件,请将编码类型更改为"UTF-8 without BOM",然后保存文件.然后程序将运行而不会出错.

Xml.Save保存文件时,如何强制和/或指定使用"无BOM的UTF-8"编码类型?

我已经尝试了不同的方法来转换和保存文件,但Xml.Save似乎默认为"UTF-8"enconding类型.

$xml = New-Object -TypeName XML
$xml.Load($file)
$xml.configuration.config.option = $newValue
$xml.Save($file)
Run Code Online (Sandbox Code Playgroud)

xml powershell

8
推荐指数
1
解决办法
8753
查看次数

使用PowerShell获取与amazon访问密钥相关的s3存储桶列表?

我已经尝试使用谷歌搜索如何检索与亚马逊访问密钥相关的可用s3存储桶列表,但要么我正在搜索错误的条款,要么我没有通过足够的结果.

我有一个访问密钥和密钥,但我不知道与帐户或IAM用户关联的存储桶名称.

如何使用Powershell和AWS Tools获取可用的存储桶名称列表?

powershell amazon-s3 amazon-web-services aws-powershell

6
推荐指数
1
解决办法
7407
查看次数

使用powershell和regexp替换整行文本?

我有编程背景,但我对 powershell 脚本和正则表达式都很陌生。Regexp 一直让我望而却步,我之前的项目从未“强迫”我学习它。

考虑到这一点,我有一个文件,其中包含一行需要替换的文本。我不能依赖于知道该行的位置,它前面是否有空格,或者被替换的实际文本是什么。我知道将要替换的文本的序言和之前的内容。

再次,我不会知道“替换此文本”的价值。我只会知道它的前言“”和它之前的“”。编辑 OP 以澄清。谢谢!

我需要替换的文本行

<find-this-text>Replace This Text</find-this-text>
Run Code Online (Sandbox Code Playgroud)

潜在代码

(gc $file) | % { $_ -replace “”, “” } | sc $file
Run Code Online (Sandbox Code Playgroud)
  • 获取文件的内容,将其括在括号中以确保首先读取文件然后关闭文件,以便在尝试保存文件时不会抛出错误。

  • 遍历每一行,并发出替换语句。这是我可以使用帮助的地方。

  • 使用 Set-Content 保存文件。我的理解是这种方法更可取,因为它考虑了编码,如UTF8。

regex powershell

4
推荐指数
1
解决办法
2281
查看次数