perl 脚本无法识别参数

问题描述

C:\perl test.pl --param=eric

运行正常, 能识别出 param 的值是 eric

C:\ test.pl --param=eric

脚本能运行, 但是参数识别不出来, test.pl 里面是用的 GetOpt::Long 模块. 这里同样适用于 GetOpt::Std

首先 直接运行 test.pl 能直接运行, 说明 .pl 是和 perl.exe 关联的.
先是怀疑 perl 的 GetOpt 模块有问题, 尝试去替换那个模块, 无解.

然后google 到下面这2个答案:
Why do I have to explicitly add perl before the script for getops to run properly?
How do I make Perl scripts recognize parameters in the Win32 cmd console?

按照这2个描述去修改, 仍旧无法修复.
但是唯一确定的是, 肯定是和文件关联相关的. 下面是几个命令

C:\>assoc .pl  //查看 .pl 文件是关联那个Key
.pl=PerlScript
C:\>ftype PerlScript
PerlScript="C:\Perl\bin\perl.exe" "%1" %*

说明如果你直接运行 .pl 文件, 是在前面加上 C:Perlbinperl.exe 的, 文件名是第一个参数, 后面是其他选项.

解决问题:
打开windows的注册表, 搜索 perl.exe, 如果你看到

"C:\Perl\bin\perl.exe" "%1"

把它改为:

"C:\Perl\bin\perl.exe" "%1" %*

树莓派 raspberry 播放 路由器 上的电影

首先介绍一下情况:

  1. 路由器是基于openWRT的智能路由器;
  2. 路由器上面安装了 BT 客户端, 路由器一直开机, 且低功耗,使用BT下电影有优势;
  3. BT 客户端下的电影存放在路由器挂载的一个移动硬盘上面;
  4. 家里有另外一个树莓派, 它本身具有 HDMI 接口, 可以直接omxplayer播放电影

为什么不用路由器直接播放, 都是ARM的芯片?

  • 路由器的内存只有64M, 上面还跑其他服务, 没有 HDMI 接口,平时智能通过 samba 共享给其他设备.

详细步骤:

  1. 树莓派安装 sshfs
    sudo apt-get install sshfs
  2. 路由器安装 openssh-sftp-server
    ipkg install openssh-sftp-server
  3. 树莓派远程挂载路由器的资源
    mkdir /mnt/remote #创建挂载文件夹
    #挂载 user 是路由器上用户名, /mnt/movies 是路由器是电影文件夹
    sudo sshfs user@192.168.1.1:/mnt/movies /mnt/remote
  4. 播放电影
    omxplayer -o hdmi /mnt/remote/test.mp4

遇到的问题:

  1. 路由器无法安装 sftp-server?
    查看你的 ipkg 的配置文件 /etc/ipkg.conf
  2. sshfs 报错 : sshfs remote host has disconnected
    使用debug 参数去看一下:
    sudo sshfs -o debug,allow_root remote@192.168.1.1:/mnt/X /mnt/remote
  3. sshfs 在debug情况下报错: sh: /opt/libexec/sftp-server: not found
    确认你共享服务器上装有 sftp-server, 没有的话, 去安装
  4. 共享了, 可是没有读权限
    加上 -o allow_other 选项
  5. 树莓派 可以播放, 但是 HDMI 输出没有视频
    配置 /boot/config.txt
    hdmi_force_hotplug=1
    hdmi_drive=2

BitTorrent 协议规范 [中文翻译板]

原文网址 BitTorrent.org

BEP: 3
标题: BitTorrent 协议规范
版本: f61df4010379f5c40090a9b77b73e57db7045dee
最后修改: Fri Oct 11 15:00:20 2013 -0700
作者: Bram Cohen <bram@bittorrent.com>
状态: Final
类型: Standard
创建于: 10-Jan-2008
过往历史: 24-Jun-2009 (arvid@bittorrent.com), clarified the encoding of strings in torrent files. 20-Oct-2012 (arvid@bittorrent.com), clarified that info-hash is the digest of en bencoding found in .torrent file. Introduced some references to new BEPs and cleaned up formatting. 11-Oct-2013 (arvid@bittorrent.com), correct the accepted and de-facto sizes for request messages

BitTorrent is a protocol for distributing files. It identifies content by URL and is designed to integrate seamlessly with the web. Its advantage over plain HTTP is that when multiple downloads of the same file happen concurrently, the downloaders upload to each other, making it possible for the file source to support very large numbers of downloaders with only a modest increase in its load.

BitTorrent 是一个文件分发的协议. 它以URL识别内容,特地设计为可以与网络无缝集成。

<to be continued>









- 阅读剩余部分 -

Raspberry 每5分钟拍一张照片并上传到远程服务器

  1. 启动 raspberry的 camera 功能
    命令行 raspi-config 找到拍照设置,enable 它。 退出并选则重启
  2. 编写拍照并上传的脚本 脚本放在 /var/spool/cron/pi 目录,命名为 photo.sh

    #!/bin/sh

    cd /home/pi/photo
    time=$(date +"%H%M")
    suffix=.jpg
    fileName=img$time$suffix

    raspistill -t 1000 -o $fileName
    sshpass -p 密码 scp $fileName 用户名@192.168.1.108:/mnt/远程目录/$fileName
    rm $fileName

  3. 加入 cron job
    crontab -e
    加入 ×/5 5-23 × × × /var/spool/cron/pi/photo.sh
    (上面的×是星号)
  4. 重启 cron 进程
    sudo service cron restart

可能遇到的问题
sshpass 没有安装 : sudo apt-get install sshpass
脚本正常执行, 却没有scp copy 到远程: 可能没有接收ssh key, 手工 ssh 登录一次
不要使用 sudo crontab -e, 这是以 root 的身份加
上面的脚本只保留一天的照片所以第二天会覆盖第一天的。