Perl Script(WSH)サンプル
1.「Hello World!」の表示
- vbs-
Msgbox("Hello World!")
- pls -
$WScript->Echo("Hello World!");
2.ドラッグ&ドロップされたファイルの表示
- vbs -
Set Arg = WScript.Arguments
If Arg.Count > 0 Then
For Each str In Arg
MsgBox str
Next
End If
- pls(wsf) -
<Job ID="DragDrop">
<script language=PerlScript>
$arg = $WScript->{Arguments};
$count = $arg->{Count};
for($i = 0; $i < $count; $i++) {
$WScript->Echo($arg->Item($i));
}
</script>
</Job>
WSH2.0で新たに、ファイルのドラッグアンドドロップが可能になりましたが、VBS、JS、WSH、WSFファイルでしか機能しないようです。なので、XMLフォーマットによるWSFファイルで表記しています。
3.メモ帳の起動と文字の入力
- vbs -
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "notepad"
message = "Hello from VBScript!" & vbCr
for i = 1 to len(message)
char = mid(message, i, 1)
WScript.Sleep(100)
WSHShell.SendKeys char
next
- pls -
$WshShell = $WScript->CreateObject("WScript.Shell");
$WshShell->Run("notepad");
$message = "Hello from PerlScript!";
for($i=0; $i < length($message); $i++) {
$char = substr($message, $i, 1);
$WScript->Sleep(100);
$WshShell->SendKeys($char);
}
4.ファイル全体を読み込んで表示する
- vbs -
Set objFs = WScript.CreateObject("Scripting.FileSystemObject")
Set objText = objFs.OpenTextFile("hoge.txt")
str = objText.ReadAll
objText.Close
MsgBox(str)
- pls -
open(IN, "hoge.txt"); @lines = <IN> close(IN);
$WScript->Echo(@lines);
5.複数のスクリプトエンジンを使った記述
- wsf -
<Job ID="count">
<script language="VBScript">
msgbox("123")
</script>
<script language="JavaScript">
WScript.Echo("456");
</script>
<script language="PerlScript">
$WScript->Echo("789");
</script>
</Job>
- wsf -
<Job ID="email">
<script language="PerlScript">
sub address{
local($addr) = @_;
local($ret) = false;
if($addr =~ /^[\w\.\-]+\@[\w\-]+\.[\w\-\.]+$/){
$ret = true;
}
return $ret;
}
</script>
<script language="VBScript">
element = InputBox("MailAddress Check!")
ans = address(element)
if ans = "true" then
wer = "正しいアドレスです。"
else
wer = "誤りがあります。"
end if
msgbox(wer)
</script>
</Job>